我在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);
}
答案 0 :(得分:0)
应用程序池没有特定原因停止。它可能是Windows注册表错误,系统错误或程序集权限错误。找出原因的最佳方法是去查看事件查看器。
从管理工具选择事件查看器
或者,按Windows键并键入事件查看器。一旦进入Windows日志,然后查看应用程序日志。搜索与IIS / ASP.Net或.Net框架相关的任何错误(红色图标)或警告(黄色图标)。我附上了系统中的样本图像 -
另一个实例 -
**编辑**:启用https后停止了另一种可能性。检查SSL证书。最常见的原因是在多个站点中使用相同的证书。只有通配符证书可以在多个站点中使用。如果证书是自签名的,请删除它并使用*创建一个新证书,作为证书名称的前缀。然后使用那个。