如何防止POST请求上的应用程序池停止?
我有一个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);
}
有没有具体的原因,应用程序池停止。它可能是一个Windows注册表错误,系统错误或程序集权限错误。找出原因的最好方法是去查看事件查看器。
从管理工具选择事件查看器
此外,按WIN输入事件查看器。一旦看到Windows日志和应用程序日志。搜索与IIS/ASP.Net或.Net框架相关的任何错误(红色图标)或警告(黄色图标)。我从我的系统连接的样本图像 -
另一个实例 -
**编辑**:有,因为它启用HTTPS后停止一个其他可能性。检查SSL证书。最常见的原因是在多个站点使用相同的证书。只有通配符证书可用于多个站点。如果证书是自签名的,请将其删除并使用*作为证书名称的前缀创建一个新证书。然后用那个。
亲爱的@brainless,我不能看到你的图像,我也找到事件查看器,但没有找到IIS或.Net日志。 –
Dear @ brainless-coder,我发现它,但我不能理解错误消息:应用程序池'api.domain.com(域)(4.0)(池)'正在被自动禁用,由于一系列失败的过程中)服务该应用程序池。 –
查看更多日志。 –
检查服务器的事件日志,死了池的错误可能记录在那里 –