0

我编写了一个通过 WCF 提供 REST api 的 C# Windows 服务。该服务需要调用另一个同样使用 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。有谁知道为什么会这样或我该如何解决?谢谢。

4

1 回答 1

1

当在 WCF 服务中使用WebChannelFactory已经有.OperationContextWebChannelFactory

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

于 2012-06-08T05:56:25.207 回答