C# ASP.NET MVC应用程序中的非托管DLL导致IIS服务器上的应用程序池停止 我的ASP.NET MVC应用程序使用了一个用C++编写的非托管外部DLL。
此网站在Visual Studio中运行良好,可以正确定位和访问外部DLL。但是,如果在本地Web服务器(运行IIS 7.5)而不是Visual studio IIS Express上发布网站,则会出现以下错误:C# ASP.NET MVC应用程序中的非托管DLL导致IIS服务器上的应用程序池停止 我的ASP.NET MVC应用程序使用了一个用C++编写的非托管外部DLL。,c#,asp.net,asp.net-mvc,dll,C#,Asp.net,Asp.net Mvc,Dll,此网站在Visual Studio中运行良好,可以正确定位和访问外部DLL。但是,如果在本地Web服务器(运行IIS 7.5)而不是Visual studio IIS Express上发布网站,则会出现以下错误: HTTP Error 503. The service is unavailable. 外部DLL位于网站的bin目录中。在查看IIS日志时,我注意到每次调用DLL时defaultapppool都会停止 HTTP/1.1 GET /Bio/Select/3 503 1 Disable
HTTP Error 503. The service is unavailable.
外部DLL位于网站的bin目录中。在查看IIS日志时,我注意到每次调用DLL时defaultapppool都会停止
HTTP/1.1 GET /Bio/Select/3 503 1 Disabled DefaultAppPool
我尝试了以下方法:
[HttpGet]
public ActionResult Select(int ID)
{
int res = BSSDK.BS_InitSDK();
if (res != BSSDK.BS_SUCCESS)
{
ModelState.AddModelError("Error", "SDK failed to initialise");
}
return View()
}
public class BSSDK
{
[DllImport("BS_SDK.dll",
CharSet = CharSet.Ansi,
EntryPoint = "BS_InitSDK")]
public static extern int BS_InitSDK();
}
我的看法
@model IEnumerable<BasicSuprema.Models.BioUser>
@using GridMvc.Html
@{
ViewBag.Title = "Bio Users On DB";
}
<div class="well well-sm"><h3>@ViewBag.Title</h3></div>
@Html.ValidationMessage("Error")
<div class="grid-wrap">
@Html.Grid(Model).Named("UsersGrid").Columns(columns =>
{
columns.Add(c => c.BioUserID).Titled("ID");
columns.Add(c => c.UserName).Titled("User");
}).WithPaging(10).Sortable(true)
</div>
我重新卸载并安装了IIS,然后重复了问题中所述的所有步骤,最终成功了。为了找出应用程序在哪里搜索dll,我推荐Microsoft。它不仅将记录CLR搜索DLL的位置,还将记录有关加载失败原因的更多详细信息 此外,查看进程是否实际打开dll的文件句柄可能会有所帮助。您可以通过Process Explorer了解: *下载并以管理员身份运行它。 *为“进程名称”添加筛选器并使用“w3wp.exe” *启动应用程序池
*在process explorer中搜索“BS_SDK.dll”,您将看到它试图从哪个目录加载它。在服务器中,应用程序日志中应该包含更详细的错误。您能查看并发布详细信息吗?您是否在应用程序池中使用.net framework客户端配置文件???@Mitchellers您指的是哪些日志?您能告诉我应用程序日志的位置吗?@Mr。香港人 我应该在哪里检查它是否是客户端配置文件?我知道我已经将其设置为框架版本4?检查这里:您是否使用客户端配置文件.net framework??如果是这样,请尝试设置为非客户端配置文件。谢谢@chris会在我有时间的时候查看它。我确实使用了process explorer,但没有尝试fusionlog
Unable to load DLL 'BS_SDK.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)