调试 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 的通信?
web service, wcf, wcf rest, web api之间的区别