如果调用另一个 Web 服务的 Web 服务响应对它的调用,则调用另一个 Web 服务的行为会有所不同
本文关键字:Web 服务 调用 另一个 有所不同 响应 如果 | 更新日期: 2023-09-27 18:36:35
我编写了一个C# Windows服务,它通过WCF提供REST api。 此服务需要调用另一个也使用 REST API 的 Web 服务。 我的服务可以与其他服务完美通信,除非有人调用了我的服务并且它当前正在响应。 我写了一个简单的测试:
public void TestConnection()
{
WebChannelFactory<IOtherService> wf = new WebChannelFactory<IOtherService>(otherURI);
IOtherService service = wf.CreateChannel();
service.Test();
}
[ServiceContract]
public interface IOtherService
{
[WebGet(UriTemplate = "services/account?username=testuser&password=d625a4de623dce36af2b75102eaf0ce7&locale=en-US", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
[OperationContract]
AccountServiceInfo Test();
}
通常,当我调用TestConnection时,它可以完美运行,但是当有人调用我的服务需要我调用TestConnection时,其他服务会看到POST而不是GET并返回400。 有没有人知道为什么会这样或我如何解决它? 谢谢。
在已有OperationContext
的 WCF 服务中使用WebChannelFactory
时,可能需要创建一个新上下文,然后才能使用WebChannelFactory
创建的通道成功标注。
public void TestConnection()
{
var wf = new WebChannelFactory<IOtherService>(otherURI);
var service = wf.CreateChannel();
using ((IDisposable)service)
using (new OperationContextScope((IContextChannel)service))
{
service.Test();
}
}
http://blogs.msdn.com/b/pedram/archive/2008/07/19/webchannelfactory-inside-a-wcf-service.aspx