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

C# OWIN Web Api-对于最近返回200的请求,响应突然返回404,c#,iis,asp.net-web-api,owin,C#,Iis,Asp.net Web Api,Owin,我用一些更相关的信息编辑了我的问题。 我有一个owinwebapi网站,它托管在IIS上 应用程序有一个具有2个操作的单一控制器。 该应用程序运行良好。所有操作都返回有效结果。 当应用程序池被回收时,应用程序开始返回404。 只有重建bin目录(我目前正在本地工作)才能恢复应用程序(应用程序池上的stop\start没有任何积极作用) 我的Startup.cs是这样的: var httpConfiguration = new HttpConfiguration(); WebApiConfigur

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

我有一个
owinwebapi
网站,它托管在
IIS

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

当应用程序池被回收时,应用程序开始返回404。 只有重建bin目录(我目前正在本地工作)才能恢复应用程序(应用程序池上的stop\start没有任何积极作用)

我的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);
我发现了问题

我的启动类位于外部dll上,该dll引用到我的应用程序(并存在于我的bin文件夹中)

我将
“owin:appStartup”
键添加到我的web.config中的
appSettings
部分:

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

owin:appStartup
键指向外部dll时,它一直工作,直到应用程序的应用程序池被回收(我在IIS上托管),然后开始抛出404结果

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

现在,我在应用程序的dll上创建了一个虚拟适配器,并将
owin:appStartup
分配给它


我不确定这是否是设计的。

请给我们显示一个工作和非工作请求的URL。@mjwills-它是完全相同的请求(URL、标题、正文)。这就是为什么它让我抓狂的原因。我想,你在IIS中托管你的应用程序。此行为是否发生在IIS回收应用程序后(请检查回收设置)?您如何知道应用程序没有突然关闭?可能存在空闲超时或应用程序崩溃。尝试在startup方法的开头添加显式日志,并检查是否只有一个启动事件。此外,请检查Windows事件日志以了解相关的错误事件。如果你一直调用你的应用程序,比如说每30秒,你有相同的行为吗?@SergeyL-关于回收,我已经检查了事件日志。关于添加日志,我现在正在做的就是在全球范围内以及在中间件之间添加日志。当应用程序工作时,它可以流畅地为请求提供服务。然后我停止发送it请求几分钟,在接下来的请求中,我收到404响应,直到重新构建应用程序(我在本地工作)。为了避免将来出现此类问题(由于移动或重命名启动类而导致)我建议使用,但启动类由多个服务共享,因此位于外部程序集中。对我来说,这似乎是一个bug。
<appSettings>
    <add key="owin:appStartup" value="WebApiServicePrototype.Startup.ServiceStartup, WebApiServicePrototype" />
</appSettings>