我有两个WCF服务Exchange1.svc和Exchange2.svc都设置为RESTful JSON消费者。 Exchange1.svc运行正常,但是当我尝试发布到Exchange2.svc时,我收到了一条未找到端点的消息。
我做错了什么?
我的IExchange2界面是:
[ServiceContract]
public interface IExchange2
{
[System.ServiceModel.OperationContract(Name = "InsertReading")]
[WebInvoke(UriTemplate = "/InsertReading?memberID={memberID}", Method = "POST", ResponseFormat = WebMessageFormat.Json)]
void InsertReading(string memberID);
}
我想要点击的网址是:http://localhost:49701/Exchange2.svc/DiaInsertReading?memberID=6519548
我的配置是:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="MyNamespace.Exchange1Behavior">
<webHttp/>
</behavior>
<behavior name="MyNamespace.Exchange2Behavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="MyNamespace.Exchange1">
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="MyNamespace.Exchange1Behavior" contract="MyNamespace.IExchange1" />
</service>
<service name="MyNamespace.Exchange2">
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="MyNamespace.Exchange2Behavior" contract="MyNamespace.IExchange2" />
</service></services></system.serviceModel>
答案 0 :(得分:2)
我已经编辑了我的帖子,因为答案没有帮助。由于您使用svc在IIS中托管,因此您不需要像我在之前的回答中所说的那样在绑定中设置地址。 baseaddress将是您服务器的位置。例如:http://localhost:49701/Exchange2.svc
。如果您点击此地址,则应访问WCF服务网页。
由于您使用的是POST方法,因此您可以在请求正文中发送数据。如果你安装了小提琴手,你可以在作曲家中设置发布和发送到http://localhost:49701/Exchange2.svc/InsertReading
的方法,如果这是你的服务地址。
在请求正文的正文中,您将{ memberID:"123" }
更改为您想要发送给您服务的任何值。
或者您可以在地址中发送数据,例如:http://localhost:49701/Exchange2.svc/InsertReading?memberID=123
如果您现在执行请求,则应该返回200 OK。
答案 1 :(得分:1)
在 web.config 文件中指定您的终端
<service name="MyNamespace.Exchange2">
<endpoint address="Exchange2" binding="webHttpBinding" behaviorConfiguration="MyNamespace.Exchange2Behavior" contract="MyNamespace.IExchange2" />
然后,在您的网址中将此结束点添加为:
http://localhost:49071/Exchange2/DiaInsertReading?memberID=6519548