[seasar-dotnet:717] Re: S2がWindows Server上で初期化できない (System.EnterpriseServices.RegistrationException)

Kazuya Sugimoto [E-MAIL ADDRESS DELETED]
2007年 12月 27日 (木) 23:52:58 JST


杉本です。

ドキュメントを修正すべく、ここ数日、分散トランザクション関係の動作確認をして
いたのですが、確認が終わったので、まとめを流しておきます。

S2Container.NETのトランザクションで、分散トランザクションを利用するためには
Seasar.dllをCOM+ アプリケーションにインストールしないといけません。

COM+ アプリケーションへのインストールは自動で行われますが、権限がない
場合はレジストリキーへのアクセスが拒否されたというエラーメッセージがでます。

解決策としては、権限を持ったユーザで実行するか、あらかじめ権限を持った
ユーザでCOM+ アプリケーションへのインストールを手動で行うことが考えられます。

ASP.NETでは以下のように実行ユーザを、権限のあるユーザに偽装することも
できますが、初回のみのためにこのような設定を行うのは好ましくないでしょう。

Web.config
  <system.web>
    <identity impersonate="true" userName="Administrator" password="xxx" />

手動でSeasar.dllをCOM+ アプリケーションにインストールするためには.NET
サービス インストール ツール (RegSvcs.exe) を使います。

Regsvcs.exeは.NET 2.0 の場合以下のパスに存在します。
%windir%\Microsoft.NET\Framework\v2.0.50727\RegSvcs.exe

以下のようにRegSvcs.exeのパラメータにSeasar.dllへのフルパスを渡して、
Seasar.dllをCOM+ アプリケーションにインストールします。

RegSvcs.exe Seasar.dllへのフルパス


# RegSvcs.exe実行後、SKYさんは再起動が必要と書かれてましたが、
# 私の環境では必要ありませんでした。

# 循環参照の例外は、レジストリの例外が発生して、2回目以降
# (RegSvcs.exe実行前)にアクセスすると発生するので、RegSvcs.exe
# 実行後にCtrl+F5で更新すれば問題ないのではないかと思います。

以上です。

07/12/18 に Kazuya Sugimoto さんは書きました:
> SKYさん、
>
> 杉本です。
> 手順ありがとうございます。
>
> ドキュメントの方にも反映させたいと思います。
>
> 07/12/18 に gates msさんは書きました:
> > 杉本さん、MLメンバの皆さま。
> >
> > SKYです。情報提供ありがとうございます。
> >
> > その後、COM+の登録方法を調査して、
> > 以下の方法で解決したので、参考までにご連絡します。
> >
> > <解決策>
> > 今回は.NET
> > Frameworkに付属のregsvcs.exeツールを使ってSeasar.dllをCOM+へ登録しました。
> >
> > .NET Framework 2.0の場合、ツールの格納場所は以下です。
> > C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
> >
> > regsvcs 登録するファイル名
> > でCOM+へ登録できます。
> > 今回の場合、
> >
> > regsvcs (Seasar.dllへのフルパス)
> >
> > を実行しました。警告がたくさん出ますが、とりあえず登録成功しました。
> >
> > その後、Windows Serverを再起動する必要があります。
> > なお、再起動しないでアプリケーションを実行すると
> > [ESSR0047]Seasar.Extension.Tx.TransactionInterceptorで循環参照が発生しました
> > エラーが出ます。
> >
> >
> > 今回、私が参画しているプロジェクトでは、S2Container.NETをトレースログとトランザクション管理の部分に採用しました。データアクセスにはTableAdapterを採用したため、MS-DTCの使用が必須でした。
> >
> > S2の自動トランザクション管理機能を使う場合、Windows
> > Serverへデプロイすると私と同じ現象に遭遇すると思いますので、デプロイ手順をドキュメントに反映していただければ幸いです。
> >
> >
> > 以上
> >
> >
> > 07/12/17 に Kazuya Sugimoto <[E-MAIL ADDRESS DELETED]> さんは書きました:
> > >
> > > SKYさん、こんにちは。
> > >
> > > 杉本です。
> > >
> > > MS DTCを使ったトランザクションをお使いでしょうか?
> > > 特に分散トランザクションの必要が無ければ、ローカルトランザクションの方を
> > > お勧めいたします。
> > >
> > > もし分散トランザクションが必要であれば、下記のページを参考にしてみて下さい。
> > >
> > http://ml.seasar.org/archives/seasar-dotnet/2005-July/000057.html
> > >
> > >
> > > 07/12/17 に gates ms さんは書きました:
> > > > はじめまして。SKYと申します。
> > > >
> > > > S2Container.NETでトランザクションを初めて使用しているのですが、
> > > > WindowsXPで開発したWebサービスを
> > > > WindowsServerへ配置したところ、S2が初期化できずに困った事態になりました。
> > > > 同様の現象に遭遇されたことがある方がいらっしゃいましたら、
> > > > アドバイスいただきたく、メールさせていただきます。
> > > >
> > > > 困っているのは以下の現象です。
> > > >
> > > > <現象>
> > > > Windows Server
> > > >
> > 2003にWebサービスアプリケーションを配置し、Webサービスクライアントからリクエストすると、以下のエラーが発生する。
> > > >
> > > > System.EnterpriseServices.RegistrationException:
> > > > このタスクを実行するには、管理者資格情報が必要です。システム管理者にお問い合わせください。 --->
> > > > System.EnterpriseServices.RegistrationException: アセンブリ
> > > > 'Seasar, Version=1.2.8.0 , Culture=neutral,
> > > > PublicKeyToken=1d0d0c484d50ca62' を登録できませんでした。 --->
> > > > System.UnauthorizedAccessException: レジストリ キー
> > > >
> > 'HKEY_CLASSES_ROOT\Seasar.Framework.Util.CaseInsentiveSet'
> > > > へのアクセスが拒否されました。
> > > >
> > > >
> > > >
> > これはどうも、SeasarをCOMとして登録しようとする際に、ASP.NETの実行アカウントに管理者権限がないため発生しているようだということは、なんとなくわかりました。
> > > >
> > このようなケースではいくつか解決策が考えられると思います。WebアプリケーションでS2のトランザクションを実際に使用した経験のある方もいらっしゃると思いますが、
> > > > 具体的にどのように解決されていますでしょうか?
> > > >
> > > > ご教授いただきたく。よろしくお願いいたします。
> > > >
> > > >
> > > > _______________________________________________
> > > > seasar-dotnet mailing list
> > > > [E-MAIL ADDRESS DELETED]
> > > > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> > > >
> > > >
> > >
> > >
> > > --
> > > Kazuya Sugimoto
> > > Microsoft MVP Visual Developer - Solutions Architect
> > > http://d.hatena.ne.jp/sugimotokazuya/
> > > _______________________________________________
> > > seasar-dotnet mailing list
> > > [E-MAIL ADDRESS DELETED]
> > > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> > >
> >
> >
> > _______________________________________________
> > seasar-dotnet mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/seasar-dotnet
> >
> >
>
>
> --
> Kazuya Sugimoto
> Microsoft MVP Visual Developer - Solutions Architect
> http://d.hatena.ne.jp/sugimotokazuya/
>


-- 
Kazuya Sugimoto
Microsoft MVP Visual Developer - Solutions Architect
http://d.hatena.ne.jp/sugimotokazuya/


seasar-dotnet メーリングリストの案内