C# ASP.NET Web API加载控制器不一致

C# ASP.NET Web API加载控制器不一致,c#,asp.net-web-api,C#,Asp.net Web Api,我正在使用ASP.NETWebAPI框架构建一个RESTfulWeb服务器应用程序。它有几个不同的控制器为请求提供服务,但其中一个控制器在不同的机器上加载不一致,这使我遇到了麻烦。控制器在两台开发人员机器和一台QA机器上正确加载,但在一台开发人员机器和另一台QA机器上不加载。其他控制器在所有机器上正确加载,因此我们知道应用程序至少在某种程度上工作。更让人困惑的是,无论是否正确加载,控制器类的名称都会更改。最初的设计要求将类命名为“XyzController”,据我所知,它遵循所需的命名格式。如果

我正在使用ASP.NETWebAPI框架构建一个RESTfulWeb服务器应用程序。它有几个不同的控制器为请求提供服务,但其中一个控制器在不同的机器上加载不一致,这使我遇到了麻烦。控制器在两台开发人员机器和一台QA机器上正确加载,但在一台开发人员机器和另一台QA机器上不加载。其他控制器在所有机器上正确加载,因此我们知道应用程序至少在某种程度上工作。更让人困惑的是,无论是否正确加载,控制器类的名称都会更改。最初的设计要求将类命名为“XyzController”,据我所知,它遵循所需的命名格式。如果我将控制器的名称更改为其他名称,如“MyXyzController”或“XyzV2Controller”,则会正确加载它。当然,我们可以重命名控制器,但我们真的很想找到这个问题的根本原因,这样我们就不会一直想知道哪些机器可以使用哪些名称

我不得不相信,这是一个配置/设置问题,它工作的机器和它不工作的机器之间,但我无法想象什么配置会影响框架加载“MyXyzController”而不是“XyzController”的能力。操作系统、IIS和.NET版本之间似乎没有一致性


我完全使用RoutePrefixAttributes和RouteAttributes指定路由,不允许框架决定路由,因此我不担心路由或类名之间的冲突。

是否尝试清理“临时ASP.NET文件”中的项目文件夹?回收IIS池也会有所帮助。听起来IIS/Server在机器上也有一个旧的部署,但其运行不正常。清理项目并从IIS中删除旧版本,然后重试XyzController将正常工作。是的,我已尝试循环应用程序池,从IIS部署文件夹中删除所有二进制文件并重新部署。VisualStudio项目也会定期清理和重建。部署MyXyzController后,如果我切换回XyzController,它将返回不工作状态。除非我们能看到一些代码并重现该问题,否则很难提供帮助。但这是基于机器的,而不是基于代码的。你打开详细日志了吗?也许这能说明一些问题。我在IIS中看不到任何不同的日志级别设置,所以我不确定它们有多详细,但我确实拥有的日志文件表明,所有对此控制器的请求都返回404(我知道),并且sc-win32-status为2,对应于错误文件未找到。我很难相信这一点,因为只要更改类名,它就可以神奇地找到文件。