所以我创建了一个基于WCF Web API的REST服务。它在我的本地IIS上运行良好。但是当我将它部署到外部服务器时,它不起作用。调试WCF Web Api REST服务的问题
在我的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和外部之间有所不同?
...而我仍然不知道日志在哪里。
完整性检查。确保您的网站设置正确,应用程序池设置为正确的.net版本和正确的模式。检查你的IIS日志以确保它到达那里。什么是您的本地IIS?你的服务器IIS怎么样?有差异。 – 2012-01-17 18:42:03
比较两个IIS实例上的应用程序池,都是ASP.NET v4.0,管理流水线模式=集成。这两个服务器都是IIS 7. 我在哪里可以找到IIS日志? – 2012-01-17 18:49:26
感谢您发布答案。你是怎么弄出来的? – 2012-02-22 17:17:48