我构建了一个自定义IHttpControllerSelector
来解决一些重复的控制器名称问题。
在我的Global.asax.cs
中,我对FilterConfiguration.Configure
进行了调用,并在其回调中添加了这一行(其中config是回调的HttpConfiguration
参数):
config.Services.Replace(typeof(IHttpControllerSelector), new NamespacedHttpControllerSelector(config));
当我在本地运行时,此方法非常理想,但是当我发布到Azure时,我开始从DefaultHttpControllerSelector
中收到错误,我认为我已经替换了它。
我已经能够确定已到达回调代码,所以到目前为止,我的两个理论是
Replace
函数的工作。DefaultHttpControllerSelector
替换了IHttpControllerSelector
,然后又将其更改为默认值。由于大多数代码都是在应用程序生命周期的开始执行的(在我可以连接调试器之前),因此我在弄清楚如何有效地对其进行故障排除方面遇到了麻烦。
我现在要解决的问题是“不要重复控制器名称”,但是为了理解我的工具,很高兴找出问题的根本原因。
是什么引起本地和Azure托管代码之间的这种差异行为?如何确保Azure使用我的自定义Get-WebConfiguration //System.WebServer/Security -pspath iis:/
而不是还原为默认值?