我正在尝试将WCF服务部署到我的服务器,它的工作方式就像我想要的一样。但是在服务器上我收到了404消息。
这是我在本地调用我的测试方法时的样子:
当我部署它时,我仍然可以成功浏览到:
www.my domain name.com/Service1.svc
但是当我去:
www.my domain 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 :(得分:0)
尝试在web.config端点中添加“地址”标记。以下是我在WCF测试项目中的示例。虽然我认为它应该如何工作。这可能听起来很愚蠢,但要确保您对服务的请求实际上是HTTP GET
。也许发布您的客户端代码,如果其中任何一个不起作用。
<endpoint binding="webHttpBinding" bindingConfiguration="testBinding" contract="ASMXtoWCF.IWcf"
address="test" behaviorConfiguration="RestServiceBehavior">
</endpoint>
答案 1 :(得分:0)
您必须添加到您的merhodTest,行为接受GET请求(默认情况下它只接受POST)。为此,请向其添加WebInvoke行为,例如将以下属性添加到方法实现(这是一种行为)
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)]
顺便说一句,您可以从您的网络配置中删除主机标签,这是不必要的