В моем приложении ASP.NET MVC используется неуправляемая внешняя DLL, написанная на С++.
Этот сайт отлично работает в Visual Studio, правильно размещая и получая доступ к внешним DLL. Однако, когда веб-сайт публикуется на локальном веб-сервере (работает с IIS 7.5), а не в Visual Studio IIS Express, я получаю следующую ошибку:
HTTP Error 503. The service is unavailable.
Внешняя DLL находится в каталоге bin на веб-сайте. Когда я смотрю журналы 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>
Аналогичные вопросы включают Неуправляемые DLL файлы не загружаются на сервере ASP.NET Как вызвать неуправляемый код на веб-сайте ASP.NET и разместить его в IIS
Невозможно вызвать DLL из ASP.NET
Когда я размещал его на веб-сервере, на котором запущен IIS 8, я получаю следующую ошибку. Возможно, на моем локальном сервере IIS он возвращает ошибку 503 coz, он не может найти dll, но я еще не определил это как для размещенного. Я не имеют доступа для копирования dll в системные папки.
Unable to load DLL 'BS_SDK.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)