4

特定のドメイン名 (私が勤務している会社) で署名された ComVisible DLL を作成しました。この DLL を別のドメインで実行されている顧客の Web ホスト マシンに配置し、C:\Windows\Microsoft.NET\Framework64\v4.0.30319\regsvcs を使用して登録します。

DLL は、顧客の Web ホストのローカル ディスクに XLSX ファイルを作成します。ユーザーはブラウザでこのファイルをダウンロードできます。

顧客の Web ホストに対してリモート デスクトップ セッションを開いた場合、DLL は期待どおりに動作し、顧客は作成された一時ファイルをダウンロードできます。

ただし、リモート デスクトップ セッションをドロップするとすぐに (ログアウトせず、VPN を接続したままにします)、DLL にアクセスできなくなります。一時ファイルは asp クラシック サイトによって作成されなくなり、顧客はもちろん、作成されていないファイルをストリーミングすることはできません。

これを引き起こす原因について何か考えはありますか?Web サーバーはエラーを生成しません。

DLL が別のドメイン名で署名されており、Web サーバー ホストが問題の一部であると考えましたが、リモート デスクトップ セッションを開いている (Microsoft の mstsc を使用しているだけです) ことで問題が解決する理由を想像できません。

4

2 に答える 2

1

最後に、AssemblyInfo.cs から次のコードを削除しました。

[assembly: ComVisible(true)]
[assembly: ApplicationActivation(ActivationOption.Server)]
[assembly: ApplicationAccessControl(false,
    AccessChecksLevel = AccessChecksLevelOption.ApplicationComponent)]

ComVisible と Guid 呼び出しを、COM に公開するクラスのデコレータに移動したところ、DLL は常に正しくインスタンス化され、エラーなしで動作するようになりました。

また、次を使用して登録します。

RegAsm.exe d:\foo\bar.dll /codebase /tlb
于 2016-04-21T15:18:51.327 に答える