[英]What is causing my ASP.NET MVC app to stop emailing and recycling the app pool to immediately fix it?
[英]Unmanaged DLL in ASP.NET MVC app causes App pool to stop on IIS server
我的ASP.NET MVC應用程序使用用C ++編寫的非托管外部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 Disabled DefaultAppPool
我嘗試過以下方法:
下面是我如何調用dll的代碼片段
[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>
類似的問題包括無法在ASP.NET服務器上加載非托管DLL 如何在ASP.NET網站中調用非托管代碼並將其托管在IIS中
當我在運行IIS 8的Web服務器上托管它時,我得到以下錯誤。所以可能在我的本地IIS服務器上它返回錯誤503因為它找不到dll但我還沒有確定這個托管的我沒有訪問權限將dll復制到系統文件夾。
Unable to load DLL 'BS_SDK.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
為了找出你的應用程序搜索您的DLL,我建議微軟FusionLog 。 它不僅會記錄CLR搜索dll的位置,還會記錄有關加載失敗原因的更多詳細信息。
此外,查看進程是否實際打開dll的文件句柄可能會有所幫助。 您可以通過Process Explorer找到:*下載ProcessExplorer並以管理員身份運行它。 *為“進程名稱”添加過濾器並使用“w3wp.exe”*啟動應用程序池*搜索“BS_SDK.dll”的進程資源管理器,您將看到它嘗試加載它的目錄。
我重新安裝並重新安裝了IIS,然后重復了問題中的所有步驟,它終於奏效了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.