2012-01-13 145 views
1

我想部署一个WCF服务到我的服务器,它的工作方式就像我希望它在本地一样。但在服务器上,我收到了404消息。JSON WCF部署服务器上的服务404

这是个什么样子,当我打电话给我的测试方法本地,如:

Image of the wanted result

当我部署它,我仍然可以成功浏览到:

www.my域name.com/ Service1.svc

,但是当我去:

www.my域name.com/Service1.svc/test

我收到404错误。什么可能导致这个? 这是所有相关代码:

IService1.cs

namespace HighscoreWebService 
{ 
[ServiceContract] 
public interface IService1 
{ 
    [OperationContract] 
    [WebGet(UriTemplate = "Test", 
     ResponseFormat = WebMessageFormat.Json, 
     BodyStyle = WebMessageBodyStyle.Bare)] 
    string Test(); 
} 
} 

Service1.svc.cs

namespace HighscoreWebService 
{ 
public class Service1 : IService1 
{ 
    public string Test() 
    { 
     return "Hello world!"; 
    } 
} 
} 

Web.config中的部分

<system.serviceModel> 
<services> 
    <service name="HighscoreWebService.Service1" 
      behaviorConfiguration="jsonRestDefault"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http:/xxxxxx"/> 
     </baseAddresses> 
    </host> 
    <endpoint name="jsonRestEndpoint" 
       behaviorConfiguration="RESTFriendly" 
       binding="webHttpBinding" 
       contract="HighscoreWebService.IService1"> 
    </endpoint> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="jsonRestDefault"> 
     <serviceMetadata httpGetEnabled="true" /> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
    </behavior> 
    </serviceBehaviors> 
    <endpointBehaviors> 
    <behavior name="RESTFriendly"> 
     <webHttp/> 
    </behavior> 
    </endpointBehaviors> 
</behaviors> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 

我怀疑我在web.config中犯了错误。我对asp.net非常陌生,所以我可能犯了一些初学者的错误。但是因为这在本地工作,所以我猜可能是服务器配置有问题。或者在web.config中我需要做的一些事情来适应服务器配置。

感谢您阅读本文。

回答

0

尝试在您的web.config端点中添加一个“地址”标记。这里是我在我的WCF测试项目中的一个例子。尽管我会认为它应该如何运作。这可能听起来很愚蠢,但请确保您对服务提出的请求实际上是HTTP GET。也许发布您的客户端代码,如果有任何不起作用。

<endpoint binding="webHttpBinding" bindingConfiguration="testBinding" contract="ASMXtoWCF.IWcf" 
     address="test" behaviorConfiguration="RestServiceBehavior">  
     </endpoint> 
+0

谢谢你的回应!我尝试添加地址=“测试”,但现在当我在本地导航时,我收到一条消息:“找不到端点” – Lage 2012-01-13 20:57:05

+0

您可以发布您用于获取该服务的客户端代码吗? – Etch 2012-01-13 21:02:00

+0

我还没有使用客户端,首先尝试让它在浏览器中工作。就像在本地工作一样。 – Lage 2012-01-13 21:31:31

0

您必须添加到您的merhodTest行为接受GET请求(默认情况下它只接受POST)。要做到这一点通过添加下列属性你的方法实现添加WebInvoke行为给它,例如(这是一个行为)

[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)] 

顺便说一句,你可以从你的网页中删除主机标签的配置是不必要的

+0

但我有WebGet不WebInvoke?我应该改变吗?有区别吗? 谢谢 – Lage 2012-01-17 23:29:01