2015-03-25 16 views
10

Benim ASP.NET MVC App C++ ile yazılmış yönetilmeyen bir dış DLL kullanır.ASP.NET MVC uygulamasında yönetilmeyen DLL, IIS sunucusunda durmak için uygulama havuzu neden olur

Bu web sitesi, Visual Studio'nun içinden düzgün çalışıyor ve harici DLL'leri doğru bir şekilde buluyor. Ancak, web sitesi yerine aşağıdaki hatayı alıyorum Görsel stüdyoda IIS Express daha (koşma IIS 7.5) yerel bir web sunucusu üzerinde yayınlandığında:

HTTP Error 503. The service is unavailable. 

harici DLL İnternet sitesinde bin dizininde yer almaktadır IIS günlüklerine baktığımda her zaman dll adını verdiğim defaultapppool'un durduğunu fark ettim.

  1. Ben System32 ve syswow64 klasöründe DLL koymak:

    HTTP/1.1 GET /Bio/Select/3 503 1 Disabled DefaultAppPool 
    

    Aşağıdaki çalıştılar.

  2. ASPNET, IIS_WPG ve IUSR (bu sunucu için) web sitesinin bin dizinine tam hakları ve yeniden başlatıldı.
  3. Harici DLL, projelere var olan öğeler olarak eklendi ve "Çıktısına Kopyala" özelliğinin "Her Zaman Kopyala" özelliğine ayarlandı.
  4. Uygulamayı dll 32 bit olarak hedef platform x86 ile yayımladı.
  5. Tümleşik modda 32 bit çalıştıran IIS var.
  6. Ben \ system32 \ ınetsrv dizinine Aşağıda

yılında dll ben

@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> 

Benzer sorular şunlardır Benim Profili 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(); 
} 

diyoruz nasıl bir kod parçacığı koymak Unmanaged DLLs fail to load on ASP.NET serverHow to call unmanaged code in ASP.NET website and host it in IIS

Unable to call the DLL from ASP.NET

Ben web sunucusu çalıştıran barındırılması ile bu dll bulamıyorum coz hata 503 döndürür ama gelince Bunu belirlemek için henüz duyuyorum belki benim yerel IIS sunucusunda error.So altına almak 8 IIS barındırılan ben sistem klasörleri dll kopyalamak için erişim yok.

Unable to load DLL 'BS_SDK.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E) 
+2

Sunucuda, Uygulama Günlüğünde daha ayrıntılı bir hata bulunmalıdır. Detaylara bakıp mesaj gönderebilir misiniz? –

+0

Uygulama havuzunda .net framework istemci profili kullanıyor musunuz? – User2012384

+0

@MitchelSellers hangi günlükleri başvuruyorsunuz? Beni uygulama günlüğü konumuna yönlendirir misiniz? – GotaloveCode

cevap

0

IIS yeniden yükledim ve yükledim sonra sorudaki tüm belirtilen adımları yineledim ve sonunda çalıştı.

1

uygulamanızın dll için arama yaptığı 'u bulmak için Microsoft'un FusionLog numaralı Microsoft'u öneririm. Sadece CLR'nin dlls için aradığı yeri değil, aynı zamanda yükleme işleminin başarısız olduğu hakkında daha fazla ayrıntı kaydeder. Ayrıca, işlemin gerçekten dll için bir dosya tanıtıcısı açıp açmadığını görmek yardımcı olabilir. İşlem Gezgini: aracılığıyla * İndirme ProcessExplorer'u bulabilir ve yönetici olarak çalıştırabilirsiniz. * 'Process Name' için bir filtre ekleyin ve 'w3wp.exe' 'u kullanın * Uygulama havuzunuzu başlatın * 'BS_SDK.dll' için arama işlemi kaşifini arayın ve hangi dizinden yüklediğini göreceksiniz.

+0

teşekkürler @chrisn biraz zaman aldığımda ona bakacak. Process explorer kullandım ama dint fusionlog'u dene – GotaloveCode

İlgili konular