Azure で WCF をホストする際に発生した問題に対する答えを高低で検索しましたが、あきらめました。今この質問をしていますが、誰かが答えてくれることを願っています。
IIS7 で WCF を完全に動作させており、クライアント アプリケーションは既にスムーズに接続しています。すべてローカルで動作します。WCF 構成ファイルに次のバインド構成があります。
<system.serviceModel>
<standardEndpoints />
<bindings>
<basicHttpBinding>
<binding name="basicHttp" closeTimeout="00:10:00" openTimeout="00:10:00"
sendTimeout="00:10:00" allowCookies="true" maxBufferSize="2147483647"
maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
<webHttpBinding>
<binding name="webHttp" closeTimeout="00:10:00" openTimeout="00:10:00"
sendTimeout="00:10:00" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="SurveyWCFService.SurveyService">
<clear />
<endpoint address="soap" binding="basicHttpBinding" bindingConfiguration="basicHttp"
bindingName="basicHttp" contract="SurveyWCFService.SurveyService" />
<endpoint address="json" behaviorConfiguration="jsonBehavior"
binding="webHttpBinding" bindingConfiguration="webHttp" contract="SurveyWCFService.SurveyService" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="jsonBehavior">
<webHttp />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
ご覧のとおり、サービスに接続する C# アプリケーション用の SOAP エンドポイントと、REST を使用してアクセスするクライアント用の JSON という名前のエンドポイントの 2 つのエンドポイントがあります。これを「Azure Web ロール」テンプレートの既定の構成で Azure にデプロイしました。クライアントは、Azure が生成した特定の URL に既にアクセスできます。しかし、ここに奇妙なことがあります:
1) クライアントが特定のサービス メソッドを使用するたびに、次の例外が返されます。
System.ServiceModel.EndpointNotFoundException: There was no endpoint listening at
http://<hostedservicename>/SurveyService.svc that could accept the message.
This is often caused by an incorrect address or SOAP action.
See InnerException, if present, for more details. --->
System.Net.WebException: The remote name could not be resolved: '<hostedservicename>'
アプリが .cloudapp.net に接続していないことを意味するため、奇妙です。そこで、ブラウザを使用していくつかのサービス メソッドを呼び出してみました。Fiddler は、応答が「HTTP 400」であることを教えてくれます。また、エンドポイント アドレスの URL を参照した後、生成された client-config ファイルを再確認しましたが、アドレスは正しいです。
2) Azure は、私のエンドポイントとバインドを独自のものに置き換えることを決定しました。Fiddler を使用してチェックし、wsdl ファイルもチェックアウトしたときに、その結論に達しました。wsdl ファイルの下部は次のとおりです。
ローカル WSDL
<wsdl:service name="SurveyService"><wsdl:port name="basicHttp_SurveyService"
binding="tns:basicHttp_SurveyService"><soap:address location="http://localhost
/SurveyServiceLibrary/SurveyService.svc/soap"/></wsdl:port></wsdl:service>
アズール WSDL
<wsdl:service name="SurveyService"><wsdl:port name="BasicHttpBinding_SurveyService"
binding="tns:BasicHttpBinding_SurveyService"><soap:address location=
"http://<hostedservicename>.cloudapp.net/SurveyService.svc"/></wsdl:port>
</wsdl:service>
ローカル環境でのように WCF を機能させるにはどうすればよいですか? WCF で行う必要がある構成はありますか? アズールで?