某些请求的.NET 4 WCF REST服务404

时间:2011-03-21 13:15:42

标签: c# wcf rest

我有一个.NET 4.0 WCF REST服务(用于生成和验证产品密钥),我使用Arvixe(通过Visual Studio中的Web部署)在我的托管上设置。在我的Windows 7机器上,它可以从IIS运行良好,但在我的托管上,除了基本服务URL之外,我得到了404错误。例如:

  • “http://www.mydomain.com/LicensingServer/” - 按预期工作,浏览器请求返回响应(包含或不包含查询字符串参数)
  • “http://www.mydomain.com/LicensingServer/help” - 404返回,并在web.config中打开了默认的WCf帮助页面
  • “http://www.mydomain.com/LicensingServer/validate” - 从浏览器请求返回404(带或不带查询字符串参数)

我的方法定义为:

[WebGet(UriTemplate = "?bla={bla}&etc={etc}")]  
public Stream GetLicenseKey(string bla, string etc)

[WebGet(UriTemplate = "/validate?item={item}")]  
public Stream ValidateLicense(string item,)

我的Global.ascx有:

RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(), typeof(LicensingService)));

我的web.config几乎是向导生成的标准模板,但我添加了:

runAllManagedModulesForAllRequests="true"

我已经尝试在web.config中添加几个新的处理程序,用于“ .svc”(这个已存在于IIS管理器中),“。*”和“*”但没有帮助。我也尝试在Arvixe论坛中建议添加带有prefix =“http://www.mydomain.com/”的baseAddressPrefixFilter,但这也没有区别。

我还打开了WCFTrace日志记录,但到目前为止,我从服务器获取日志文件时未成功,当我下载它时显示为空0b文件,但服务器上显示为280kb。

我猜这只是一个简单的配置问题,但我的想法已经用完了。我无法理解为什么它在我的本地(非常基本安装)的IIS上运行良好,但不能在我的托管上运行。

我意识到stackoverflow上还有其他问题,但我已经抛出了大量的问题并尝试了许多建议而没有解决这个问题。很多解决方案都涉及将hanlders添加到我尝试过的web.config中。

任何人都可以告诉我出了什么问题,或者让我知道下一步该去哪看?

感谢。

2 个答案:

答案 0 :(得分:1)

查看此帖子:http://pranayamr.blogspot.com/2011/03/rest.html可能会帮助您轻松解决问题。

我可以看到没有必要这个

RouteTable.Routes.Add(new ServiceRoute("", new WebServiceHostFactory(), typeof(LicensingService)));

只需查看以上链接了解更多详情

答案 1 :(得分:1)

解决方案结果相当明显。我在一个虚拟目录中托管WCF服务,其中根网站安装了Wordpress。 Wordpress添加了URL重写,这些都阻止我访问这些服务。我添加了一个“排除”类型规则,现在一切正常。我完全被WCF配置方面所包含,甚至没有发生这种情况,我会使用IIS设置的每一页并将其与本地副本进行比较。