Мое приложение ASP.NET MVC использует неуправляемую внешнюю DLL, написанную на C++.Неуправляемая DLL в приложении ASP.NET MVC приводит к остановке пула приложений на сервере IIS
Этот веб-сайт отлично работает с Visual Studio, правильно размещая и получая доступ к внешним DLL. Однако, когда сайт публикуется на локальный веб-сервер (работает IIS 7.5), а не в Visual Studio IIS Express, я получаю следующее сообщение об ошибке:
HTTP Error 503. The service is unavailable.
Внешний DLL находится в каталоге бен в website.On взглянув на журналы IIS, я заметил, что defaultapppool останавливается каждый раз, когда я вызываю DLL.
HTTP/1.1 GET /Bio/Select/3 503 1 Disabled DefaultAppPool
Я попытался следующие:
- Я поставил DLL в System32 и syswow64 папку.
- Предоставил полные права на ASPNET, IIS_WPG и IUSR (для этого сервера) в каталог bin сайта и перезагрузился.
- Добавлена внешняя библиотека DLL в качестве существующих объектов для проектов и установлена для свойства «Копировать в вывод» в «Копировать всегда».
- Опубликован приложение с целевой платформой x86, поскольку dll 32 бит.
- У меня IIS, работающий на встроенном режиме, разрешает 32 бит.
- Я поставил DLL в каталоге \ System32 \ Inetsrv
Ниже приведен фрагмент кода, как я называю 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>
Подобные вопросы включают Unmanaged DLLs fail to load on ASP.NET server How to call unmanaged code in ASP.NET website and host it in IIS
Unable to call the DLL from ASP.NET
Когда я принимал его на веб-сервере под управлением IIS 8 я получаю ниже error.So может быть, на моем локальном сервере IIS возвращает ошибку 503 сог она не может найти библиотеку DLL, но я все же определить это как для у меня нет доступа для копирования dll в системные папки.
Unable to load DLL 'BS_SDK.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
Внутри сервера должна быть более подробная ошибка, включенная в журнал приложений. COULd вы смотрите и публикуете детали? –
Вы используете профиль клиента .net framework в пуле приложений? – User2012384
@MitchelSellers, с которыми вы ссылаетесь? Не могли бы вы направить меня на место регистрации приложения? – GotaloveCode