0

WCFを介してRESTAPIを提供するC#Windowsサービスを作成しました。このサービスは、RESTAPIを使用する別の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を呼び出す必要があるサービスを呼び出すと、他のサービスはGETではなくPOSTを認識し、400を返します。どうすれば修正できますか?ありがとう。

4

1 に答える 1

1

WebChannelFactoryが既にあるWCFサービス内で使用する場合OperationContext、によって作成されたチャネルを使用して正常にコールアウトできるようになる前に、新しいコンテキストを作成する必要がある場合があります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

于 2012-06-08T05:56:25.207 に答える