调试 WCF Web Api REST 服务的问题

Posted

技术标签:

【中文标题】调试 WCF Web Api REST 服务的问题【英文标题】:Problems debugging WCF Web Api REST service 【发布时间】:2012-02-12 13:28:11 【问题描述】:

所以我创建了一个基于 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,我在外部服务器上得到的结果与在本地得到的结果相同:“找不到端点”。

此外,我已尝试从 /MyRoute/MyResource 映射到的 MyHandler 方法中删除所有逻辑,以查看该代码中的某些内容导致请求失败,但结果仍然存在。

我最好的猜测是问题出在路由映射上。

我非常感谢在我遇到的这种特定情况下,或者更一般地关于如何调试它的帮助。令人沮丧的是,我什至不知道在哪里可以找到错误日志。我查看了事件查看器,但找不到任何内容,也不知道在哪里查看更多内容。

如果有帮助,我很乐意发布一些代码。

编辑:

好的,所以我解决了这个问题。这是一个路由的事情。我通过将它包含在 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 之间有所不同?

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

【问题讨论】:

完整性检查。确保您的网站设置正确,应用程序池设置为正确的 .net 版本和正确的模式。检查您的 IIS 日志以确保它到达那里。你的本地 IIS 是什么?你的服务器 IIS 呢?有区别。 比较两个 IIS 实例上的应用程序池,都是 ASP.NET v4.0,托管管道模式 = 集成。两台服务器都是 IIS 7。在哪里可以找到 IIS 日志? 感谢您发布答案。你是怎么想出来的? 【参考方案1】:

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

【讨论】:

以上是关于调试 WCF Web Api REST 服务的问题的主要内容,如果未能解决你的问题,请参考以下文章

ASP.Net Web API 与 WCF - Web API 能否用于向单例 WCF 服务提供基于 REST 的通信?

WCF REST 到 Web API [关闭]

web service, wcf, wcf rest, web api之间的区别

何时使用 WCF REST 和 WEB API

WCF Web API WCF REST 和 Web Service 的区别

Web Service vs WCF vs WCF REST vs Web API