0

私は一日中 WCF RIA Domainservice の問題と戦ってきました。

Windows Azure にデプロイされている WCF RIA サービス ライブラリを作成しています。SilverlightWindows 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 を喜んで使用します。

4

2 に答える 2

1

2 つのことを確認します。

1) プロキシが正しく設定されていることを確認してください。

2) SSL を使用している場合は、電話/エミュレーターに証明書がインストールされていることを確認してください。

表示されるエラーは、一般的な wcf speak for can't make a network connection です。

于 2011-11-27T02:53:17.393 に答える
0

これはランダムなエラーのようで、サービスへの接続を取得しなかったことが原因である可能性があります (到達可能でしたが)。接続を数回更新すると、最終的に例外が削除されました (これには数分から 1 日かかる場合があります)。

于 2011-11-04T14:51:03.590 に答える