1

アプリケーションプールがタイムアウトした後、外部DLLで問題が発生しています。

VS2010をC#Webアプリケーションと.NET2.0で使用しています。このアプリケーションには、外部DLL(C ++で記述)が含まれています。このDLLはプロジェクトで参照されているため、ObjectBrowserでアセンブリとすべての関数を確認できます。DLLには、ac:\ DLLディレクトリにインストールしてこのディレクトリをApplication_Start()関数のEnvironmentVariables「Path」に追加した別のDLLが必要でした。

アプリケーションは、アプリケーションがタイムアウトした後を除いて、常に正しく動作します。(デフォルトのタイムアウトは20分です)。

タイムアウト後に次にアプリケーションを実行すると、「''の型初期化子が例外をスローしました」というメッセージが表示されました。DLLの新しいオブジェクトをアセンブリで実行する関数で

エラーをスローする別のオプションは、Windowsタスクマネージャー/プロセスで「w3wp.exe」の「プロセスを終了」することです。プロセスを終了してアプリケーションを更新すると、エラーが表示されます。

ありがとう

編集:

内部例外:

at <CrtImplementationDetails>.ThrowModuleLoadException(String , Exception )
at <CrtImplementationDetails>.LanguageSupport.Initialize(LanguageSupport* )
at .cctor()The type initializer for '<Module>' threw an exception.
4

2 に答える 2

1

Cookie の削除を実装した後、他のシナリオでも同じ問題が見つかりました。

さらに掘り下げると、実際の問題は、アンマネージ DLL が IPrincipal に固有のクラスと競合していることであることがわかりました。

public class UserDataThirdParty : IPrincipal

だから私はこれらのリンクで解決策を見つけました:

'' の型初期化子が例外をスローしました

アセンブリ msvcm80 の読み込み中の DataPortal のエラー

だから今私のクラスの定義は次のとおりです。

public class UserDataThirdParty : MarshalByRefObject, IPrincipal
于 2012-06-29T16:55:37.603 に答える
0

最後に、問題は解決されました。

問題はクッキーにありました。したがって、Application_Start() 関数で、この Cookie を削除します。

HttpCookie aCookie = new HttpCookie(FormsAuthentication.FormsCookieName);
aCookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(aCookie);
于 2012-06-28T06:29:45.897 に答える