我有一个WCF休息网络服务。它工作正常。我想了解端点元素中可用的不同配置值。
特别是,我试图理解address元素的用途。更改值似乎不会改变我如何处理服务。为此,我正在运行visual studio 2010和cassini的服务。端口号设置为888。
地址设置为空字符串我得到... http://localhost:888/restDataService.svc/hello将返回“hello world”。
地址设置为“localhost”我得到... http://localhost:888/restDataService.svc/hello将返回“hello world”。
地址设置为“pox”我得到... http://localhost:888/restDataService.svc/hello将返回“你好世界”。
我在地址字段中设置的值无关紧要。它不会影响网址。我唯一的解释是,非REST服务的价值更高。
<system.serviceModel>
<services>
<service behaviorConfiguration="MobileService2.DataServiceBehaviour" name="MobileService2.DataService">
<endpoint address="pox" binding="webHttpBinding" contract="MobileService2.IRestDataService" behaviorConfiguration="webHttp">
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="MobileService2.DataServiceBehaviour" >
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
我还有以下服务合同
[ServiceContract]
public interface IRestDataService
{
[OperationContract]
[WebGet(UriTemplate = "hello")]
string Hello();
}
在.svc
中<%@ ServiceHost Language="C#" Debug="true"
Service="MobileService2.RestDataService"
Factory="System.ServiceModel.Activation.WebServiceHostFactory"
CodeBehind="RestDataService.svc.cs" %>
'代码隐藏'
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class RestDataService : IRestDataService
{
public string Hello()
{
return "hello";
}
}
答案 0 :(得分:2)
您还可以显示配置的服务元素吗?我认为您的配置未使用或您正在访问应用程序的其他实例(您是否将Cassini配置为使用端口80?),因为您的第二次和第三次测试应该返回找不到HTTP 404资源。
您的测试的正确地址是:
检查service元素中的名称是否与.svc标记中的ServiceHost指令中使用的服务类型名称(包括名称空间)完全相同。