2011-03-21 42 views
2

我有一个.NET 4.0 WCF REST服务(用于生成和验证产品密钥),这些服务是通过Arvixe(通过Visual Studio中的Web部署)托管的。本地在我的Windows 7机器上,它从IIS运行良好,但在我的主机上,除了基本服务URL之外,我都收到了404错误。例如:.NET 4某些请求上的WCF REST服务404

  • “http://www.mydomain.com/LicensingServer/” - 工作方式与一个浏览器请求返回响应(具有或不查询字符串参数)
  • “HTTP预期:// www.mydomain.com/LicensingServer/help“ - 404返回默认WCf帮助页在web.config中打开
  • ”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管理器中),“。*”和“*”添加了几个新的处理程序,但没有一个帮助。我也尝试添加一个baseAddressPrefixFilter,前缀=“http://www.mydomain.com/”,正如Arvixe论坛中的建议,但这也没有什么区别。

我也打开了WCFTrace日志记录,但到目前为止,我一直没有成功从服务器获取日志文件,它在下载时显示为空的0b文件,但在服务器上显示为280kb。

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

我意识到这里还有其他一些关于stackoverflow的问题,但我一直在抛出大量的问题,并尝试了许多建议而没有解决这个问题。很多解决方案都与将hanlders添加到我尝试过的web.config中有关。

谁能告诉我什么是错的或给我一个想法在哪里看下?

谢谢。

回答

1

该解决方案被证明是相当明显的。我将WCF服务托管在根网站安装了Wordpress的虚拟目录中。 Wordpress添加URL重写,这些阻止我访问服务。我添加了一个“排除”类型的规则,现在它都可以工作。我在WCF配置方面如此包装,以至于我甚至没有想到这一点,所以我使用了IIS设置的每一页并将其与本地副本进行比较。

1

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

,我可以看有没有必要这个

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

只是检查上面的链接,更详细

+0

我认为这篇文章适用于仍然使用.svc文件的老式服务(或者至少包含URL中的.svc)。在.NET 4中,这似乎已被替换为System.Web.Routing基础结构(我认为与MVC共享),这就需要RouteTable.Routes.Add行。我仔细阅读了这篇文章,但除了新旧服务风格之间的差异之外,我找不到任何其他内容。 – smithy 2011-03-21 20:13:21