OWIN Web Api - 对最近返回200的请求,响应突然返回404

时间:2018-03-11 12:38:52

标签: c# iis asp.net-web-api owin

我已用一些更相关的信息编辑了我的问题。

我有一个托管在Owin Web-Api上的IIS网站。

应用程序有一个带有2个动作的控制器 该应用程序运行良好。所有操作都会返回有效结果。

当应用程序池被回收时,应用程序开始返回404' s。 只重建bin目录(我当前正在本地工作)将恢复应用程序(停止\启动应用程序池不会做任何积极的事情)。

这就是我的 Startup.cs 的样子:

var httpConfiguration = new HttpConfiguration();
WebApiConfiguration.Register(httpConfiguration); // will show it's content later

appBuilder.UseRequestScopeContext(); // Third party OwinRequestScopeContext
appBuilder.Use<IOCContainerMiddleware>(); // Custom middleware that creates an IOC container per request and disposes it at the end of the request

appBuilder.UseWebApi(httpConfiguration);

WebApiConfiguration.Register

config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{action}",
constraints: new { httpMethod = new HttpMethodConstraint(HttpMethod.Post) },
defaults: null);

ConfigureDependencyResolver(config); // Custom dependency resolver that uses the IOC container from above

1 个答案:

答案 0 :(得分:1)

我发现了问题。

My Startup类位于外部dll上,该外部dll引用了我的应用程序(并存在于我的bin文件夹中)。

我在我的web.config中的"owin:appStartup"部分添加了appSettings密钥:

<appSettings>
    <add key="owin:appStartup" value="WebApiServicePrototype.Startup.ServiceStartup, WebApiServicePrototype" />
</appSettings>

owin:appStartup键指向外部dll时,它会有效,直到应用程序的应用程序池被回收(我在IIS上托管),然后开始抛出404结果。< / p>

owin:appStartup指向当前应用程序的dll中存在的Startup类时,一切正常。

所以现在,我已经在应用程序的dll上创建了一个虚拟适配器,并指定owin:appStartup指向它。

我不确定这是否符合设计要求。