在POST请求中如何防止应用程序池停止?

时间:2017-04-04 06:32:21

标签: c# asp.net-mvc asp.net-web-api2 application-pool

我在https子域上放置了一个web api服务。我使用Castle Windsor来创建从控制器到域对象的所有类(每个Web请求)。

我在本地机器上测试了所有操作,也使用了fiddler。一切正常。并没有发生内存泄漏。我们还有一个移动程序员,可以处理所有操作,而且每件事情都很好。

但是在https上托管之后,每次向网络API发送请求时,应用程序池都会停止。

但授权请求正常。我的申请有什么问题?这是我的配置文件代码:

 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);
    }

1 个答案:

答案 0 :(得分:0)

应用程序池没有特定原因停止。它可能是Windows注册表错误,系统错误或程序集权限错误。找出原因的最佳方法是去查看事件查看器。

管理工具选择事件查看器

或者,按Windows键并键入事件查看器。一旦进入Windows日志,然后查看应用程序日志。搜索与IIS / ASP.Net或.Net框架相关的任何错误(红色图标)或警告(黄色图标)。我附上了系统中的样本图像 -

enter image description here

另一个实例 -

enter image description here

**编辑**:启用https后停止了另一种可能性。检查SSL证书。最常见的原因是在多个站点中使用相同的证书。只有通配符证书可以在多个站点中使用。如果证书是自签名的,请删除它并使用*创建一个新证书,作为证书名称的前缀。然后使用那个。