2012-01-17 37 views
2

所以我创建了一个基于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和外部之间有所不同?

...而我仍然不知道日志在哪里。

+0

完整性检查。确保您的网站设置正确,应用程序池设置为正确的.net版本和正确的模式。检查你的IIS日志以确保它到达那里。什么是您的本地IIS?你的服务器IIS怎么样?有差异。 – 2012-01-17 18:42:03

+0

比较两个IIS实例上的应用程序池,都是ASP.NET v4.0,管理流水线模式=集成。这两个服务器都是IIS 7. 我在哪里可以找到IIS日志? – 2012-01-17 18:49:26

+0

感谢您发布答案。你是怎么弄出来的? – 2012-02-22 17:17:48

回答

0

当IIS托管,网页API使用相同的URL路由模块为ASP.NET(MVC)来选择端点。如果你是自主托管,它不必。