所以我创建了一个基于WCF Web API的REST服务。它在我的本地IIS上运行正常。但是,当我将它部署到外部服务器时,它无法正常工作。
在我的global.asax.cs中,我将路由“MyRoute”映射到类MyHandler。所以每当我去http://localhost/MyApplication/MyRoute/MyResource时,我都会得到有效的答复。
但是在部署之后在外部服务器上如果我在IE中打开http://localhost/MyApplication/MyRoute/MyResource我得到“Internet Explorere无法显示网页”(FF =“连接已重新设置 - 当页面被重置时,与服务器的连接被重置加载“)
如果我输入的资源名称无效:http://localhost/MyApplication/MyRoute/adfasdf我在外部服务器上获得与本地相同的结果:“找不到端点”。
此外,我已尝试从MyHandler中删除/ MyRoute / MyResource映射到的方法中的所有逻辑,以查看该代码中是否存在导致请求失败的内容,但结果仍然存在。
我最好的猜测是问题不知何故是路线映射。
在我遇到的这种特殊情况下,我非常感谢你的帮助,或者更普遍的是如何调试它。令人沮丧的是,我甚至不知道我在哪里可以找到错误日志。我查看了事件查看器,但找不到任何内容,也不知道在哪里看更多。
如果有帮助,我会很高兴发布一些代码。
修改
好的,所以我解决了这个问题。这是一个路由的事情。我通过在web.config中包含它来解决它:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="UrlRoutingModule" />
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>
</system.webServer>
我仍然不介意理解这些模块背后的机制。他们在哪里定义?是否有服务器的配置文件定义了哪些模块被加载,因为显然这在我的本地IIS和外部IIS之间有所不同?
......我仍然不知道日志在哪里。
答案 0 :(得分:0)
在IIS上托管时,Web API使用与ASP.NET(MVC)相同的URL路由模块来选择端点。如果您是自托管,则不必。