调试WCF Web Api REST服务时出现问题

时间:2012-01-17 18:31:38

标签: asp.net wcf-web-api

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

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

1 个答案:

答案 0 :(得分:0)

在IIS上托管时,Web API使用与ASP.NET(MVC)相同的URL路由模块来选择端点。如果您是自托管,则不必。