1

应用程序池超时后,我遇到了外部 DLL 的问题。

我将 VS2010 与 C# Web 应用程序和 .NET 2.0 一起使用。此应用程序包括一个外部 DLL(用 C++ 编写)。此 DLL 在项目中被引用,因此在 ObjectBrowser 中我可以看到程序集和所有函数。该 DLL 需要另一个 DLL,我将它们安装在 ac:\DLL 目录中,并将该目录添加到 Application_Start() 函数的 EnvironmentVariables“路径”中。

除应用程序超时外,应用程序始终正常工作。(它有 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 回答