-
Type:
Improvement
-
Resolution: Fixed
-
Priority:
Major
-
None
-
Affects Version/s: None
-
Component/s: Documents
-
None
[seasar-dotnet:717]
{{
杉本です。
ドキュメントを修正すべく、ここ数日、分散トランザクション関係の動作確認をして
いたのですが、確認が終わったので、まとめを流しておきます。
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で更新すれば問題ないのではないかと思います。
以上です。
}}