我创建了一个restful / json网络服务我可以使用我的浏览器消费,但不是从项目添加服务引用:它失败了
EndpointNotFoundException:没有端点侦听/.../GetDevicses, 内部异常:未找到远程服务器(404)。
我认为有一点需要注意的是,在我的浏览器中我调用了uri ... / Devices而EndpointNotFoundException似乎在寻找... / GetDevices。
我的服务只公开一种方法:
[OperationContract]
[WebGet( RequestFormat = WebMessageFormat.Json, UriTemplate = "/Devices" )]
DeviceInfoRecord[] GetDevices();
防火墙被禁用,因为我可以从浏览器使用我认为服务配置是可以的,但我不确定客户端配置。
这是客户端配置:
<behaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp defaultOutgoingResponseFormat="Json"/>
</behavior>
</endpointBehaviors>
</behaviors>
<client>
<endpoint address="http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary2/Service1/"
name="Service1" binding="webHttpBinding"
contract="ServiceReference1.IService" behaviorConfiguration="web" />
</client>
</system.serviceModel>
这是服务器配置:
<system.serviceModel>
<services>
<service name="WcfServiceLibrary2.Service1">
<endpoint address="" binding="webHttpBinding"
contract="WcfServiceLibrary2.IService"
behaviorConfiguration="restfulBehavior">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8733/Design_Time_Addresses/WcfServiceLibrary2/Service1/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="restfulBehavior">
<webHttp defaultOutgoingResponseFormat="Json" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="True" />
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
我尝试了几个没有运气的建议解决方案,所以我希望有些专家可以提供帮助。感谢。
答案 0 :(得分:1)
我不确定你的要求。但是,如果您希望为您的服务创建代理,那么REST服务将无法提供您想要的内容。
你必须添加类似&#34; basicHttpBinding&#34;的端点。创建代理并在代码中使用它。
您可以尝试添加结束点,然后尝试添加服务服务
<endpoint address="" binding="basicHttpBinding"
contract="WcfServiceLibrary2.IService">
通过这种方式,您的服务可以暴露给两个不同的端点。 (休息和肥皂)。