私は一日中 WCF RIA Domainservice の問題と戦ってきました。
Windows Azure にデプロイされている WCF RIA サービス ライブラリを作成しています。SilverlightとWindows Phone 7 Clientを介してアクセスします。クラウド アプリケーションに 2 つの Web ロールとして 2 つの ASP.NET プロジェクトがあり、2 つの異なるエンド ポイントとして機能します。
1 つ目は、Silverlight クライアントに SSL 経由のアクセスを提供します。
2 つ目は単純なエンドポイントで、WP7 クライアントの認証はありません。ポート 8080 で実行されます。
私のローカル カッシーニでは、すべて正常に動作します。両方のクライアントでサービスにアクセスできます。クラウドでは、Silverlight クライアントしか使用できません。WP7 アプリでサービスにアクセスしようとすると、次のようになります。
System.ServiceModel.EndpointNotFoundException が発生する可能性があります。Message=メッセージを受け入れることができるhttp://myapp.cloudapp.net:8080/Services/MyRIAServiceLib-Web-MyService.svc/soapでリッスンしているエンドポイントがありませんでした。これは、多くの場合、アドレスまたは SOAP アクションが正しくないことが原因です。詳細については、InnerException (存在する場合) を参照してください。
内部例外は System.Net.WebException 型であり、次のように述べています。
リモート サーバーからエラーが返されました: NotFound
自動化された ServiceReference を WP7 アプリに追加して、WCF サービスに接続しました。そうすると、VS2010は Service を正常に認識し、コードを生成して使用できるようにします。これは、サービスが利用可能であり、見つけることができることを意味するに違いありませんよね? ブラウザでhttp://myapp.cloudapp.net:8080/MyRIAServiceLib-Web-MyService.svcにアクセスすると、通常の「サービスを作成しました」というページが表示されます。
すべての dll を true に設定されたローカル コピーとして追加しましたが、これはクラウドにない可能性がありますが、いくつか見逃している可能性があります。私の web.config は次のようになります。
<configSections>
<sectionGroup name="system.serviceModel">
<section name="domainServices" type="System.ServiceModel.DomainServices.Hosting.DomainServicesSection, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</sectionGroup>
</configSections>
<system.serviceModel>
<domainServices>
<endpoints>
<add name="soap" type="Microsoft.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory, Microsoft.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</endpoints>
</domainServices>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<add name="DomainServiceModule" preCondition="managedHandler"
type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0"/>
<httpModules>
<add name="DomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</httpModules>
</system.web>
何か助けてください。私は立ち往生し、この問題について何時間も読んで検索しました。
RDP を使用して Azure マシンにアクセスできます。この問題をデバッグ/追跡するにはどうすればよいですか? 誰かが私を正しい方法に導くことができれば、Fiddler/WCF Traces を喜んで使用します。