我在应用程序池超时后面临外部DLL的问题。
我正在使用带有C#Web应用程序和.NET 2.0的VS2010。此应用程序包括一个外部DLL(用C ++编写)。这个DLL在项目中引用,所以在ObjectBrowser中我可以看到Assembly和所有函数。 DLL需要一个DLL,我将它们安装在c:\ DLL目录中,并将此目录添加到Application_Start()函数的EnvironmentVariables“Path”。
除应用程序超时后,应用程序始终正常工作。 (默认时间为20分钟。)
下次我在超时后运行应用程序时,我得到了“'类型初始值设定项''引发异常。”在执行DLL assambly的新对象的函数中
抛出错误的另一个选项是Windows任务管理器/进程中“w3wp.exe”的“结束进程”。结束进程并刷新应用程序后,将显示错误。
由于
编辑:
内部例外:
at <CrtImplementationDetails>.ThrowModuleLoadException(String , Exception )
at <CrtImplementationDetails>.LanguageSupport.Initialize(LanguageSupport* )
at .cctor()The type initializer for '<Module>' threw an exception.
答案 0 :(得分:1)
实施删除Cookie后,我发现其他方案存在同样的问题。
所以挖掘更多我发现真正的问题是我的非托管DLL与IPrincipal固有的类冲突:
public class UserDataThirdParty : IPrincipal
所以我在这些链接中找到了解决方案:
The type initializer for '' threw an exception
和
Error on DataPortal with Loading assembly msvcm80
所以现在我班级的定义是:
public class UserDataThirdParty : MarshalByRefObject, IPrincipal
答案 1 :(得分:0)
最后问题得到了解决。
问题出在cookie上。所以在Application_Start()函数中我删除了这个cookie:
HttpCookie aCookie = new HttpCookie(FormsAuthentication.FormsCookieName);
aCookie.Expires = DateTime.Now.AddDays(-1);
HttpContext.Current.Response.Cookies.Add(aCookie);