2017-04-04 165 views
1

我有一個Web API服務放在https子域。我使用溫莎城堡創建所有類(每個Web請求),從控制器到域對象。如何防止POST請求上的應用程序池停止?

我測試了本地機器上的所有操作,還使用了提琴手。一切正常。並沒有發生內存泄漏。而且我們還有一名手機程序員,他能夠處理所有的操作,而且每件事情都很好。

但在https上託管後,通過向web api URL發送每個請求,應用程序池停止。

但授權請求正常工作。我的應用程序出了什麼問題?這裏是我的代碼到配置文件:

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config, IAppBuilder app) 
    { 


     // Web API configuration and services 
     var container =Bootstrapper.WireUp(); 

     ConfigCors(container, config); 



     RegisterControllers(container); 

     UserManagement.Config.Bootstrapper.WireUp(container); 
     config.Services.Replace(typeof(IHttpControllerActivator), new WindsorControllerActivator(container)); 

     container.Register(Component.For<IDataProtectionProvider>().ImplementedBy<DpapiDataProtectionProvider>() 
      .UsingFactoryMethod(x => app.GetDataProtectionProvider())); 

     // Web API routes 
     config.MapHttpAttributeRoutes(); 
     config.AddFiveLevelsOfMediaType(); 

     config.Routes.MapHttpRoute(
      name: "DefaultApiWithAction", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
     //config.Routes.MapHttpRoute("DefaultApiWithId", "Api/{controller}/{id}", new { id = RouteParameter.Optional }, new { id = @"\d+" }); 
    } 

    private static void ConfigCors(IWindsorContainer container, HttpConfiguration config) 
    { 
     var cors = new EnableCorsAttribute("*", "*", "*"); 

     config.EnableCors(cors); 
    } 
+0

檢查服務器的事件日誌,死了池的錯誤可能記錄在那裏 –

回答

0

有沒有具體的原因,應用程序池停止。它可能是一個Windows註冊表錯誤,系統錯誤或程序集權限錯誤。找出原因的最好方法是去查看事件查看器。

管理工具選擇事件查看器

此外,按WIN輸入事件查看器。一旦看到Windows日誌和應用程序日誌。搜索與IIS/ASP.Net或.Net框架相關的任何錯誤(紅色圖標)或警告(黃色圖標)。我從我的系統連接的樣本圖像 -

enter image description here

另一個實例 -

enter image description here

**編輯**:有,因爲它啓用HTTPS後停止一個其他可能性。檢查SSL證書。最常見的原因是在多個站點使用相同的證書。只有通配符證書可用於多個站點。如果證書是自簽名的,請將其刪除並使用*作爲證書名稱的前綴創建一個新證書。然後用那個。

+0

親愛的@brainless,我不能看到你的圖像,我也找到事件查看器,但沒有找到IIS或.Net日誌。 –

+0

Dear @ brainless-coder,我發現它,但我不能理解錯誤消息:應用程序池'api.domain.com(域)(4.0)(池)'正在被自動禁用,由於一系列失敗的過程中)服務該應用程序池。 –

+0

查看更多日誌。 –