2017-04-04 162 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

查看更多日志。 –