1. ホーム
  2. wcf

[解決済み] サービスエンドポイントのバインディングがHTTPプロトコルを使用していないことが原因である可能性があります。

2023-03-03 11:01:08

質問

私のローカルマシンで WCF サービスが正常に動作しています。それをサーバーに置いたところ、次のようなエラーが発生しました。

を受信中にエラーが発生しました。 への HTTP 応答を受信中にエラーが発生しました。 http://xx.xx.x.xx:8200/Services/WCFClient.svc . これは、サービスのエンドポイントバインディングがHTTPを使用していないことが原因である可能性があります。 エンドポイントバインディングがHTTP プロトコルを使用していないことが原因である可能性があります。また、これは HTTP リクエストコンテキストがサーバーによって中断されたため サーバによって中断されたことが原因である可能性もあります (おそらく サービス停止によるもの)。詳細はサーバ のログを参照してください]。

urlにあるサービスにアクセスしてみましたが、正常に動作しています。私が関数にやっていることは、画像名に文字列を返すだけなので、渡されるデータは多くありません。私はログをトレースし、それは私に同じ情報を与える。以下は私のクライアント設定です。

<binding name="basicHttpBinding_IWCFClient" closeTimeout="00:01:00"
         openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
         bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
         maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
         messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
         allowCookies="false">
    <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
                  maxArrayLength="2147483647" maxBytesPerRead="2147483647" 
                  maxNameTableCharCount="2147483647" />
    <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
    </security>
</binding>
<endpoint name="basicHttpBinding_IWCFClient" 
    address="http://localhost:4295/Services/WCFClient.svc"
    binding="basicHttpBinding" 
    bindingConfiguration="basicHttpBinding_IWCFClient" 
    behaviorConfiguration="WCFGraphicManagementTool.Services.ClientBehavior"
    contract="WCFClient.IWCFClient" />

以下は私のサーバ設定です。

<service behaviorConfiguration="WCFGraphicManagementTool.Services.WCFClientBehavior"
    name="WCFGraphicManagementTool.Services.WCFClient">
   <endpoint name="basicHttpBinding_IWCFClient"
       address="" 
       binding="basicHttpBinding" 
       contract="WCFGraphicManagementTool.Contracts.IWCFClient" />
   <endpoint 
       address="mex" 
       binding="mexHttpBinding" 
       contract="IMetadataExchange" />
</service>
<behavior name="WCFGraphicManagementTool.Services.WCFClientBehavior">
   <dataContractSerializer maxItemsInObjectGraph="2147483647" />
   <serviceThrottling maxConcurrentCalls="120" maxConcurrentSessions="120"
                      maxConcurrentInstances="120" />
   <serviceMetadata httpGetEnabled="true" />
   <serviceDebug includeExceptionDetailInFaults="true" />
</behavior>

ローカルマシンで動作しているので、サーバーでの設定でしょうか?

どのように解決するのですか?

問題がわかりました。結局、設定ファイルのパスが違っていたんですね。WCFのエラーは、時々とても役に立ちますね。