2011-01-20 14 views
0

AzureでwebroleでホストされているWCFサービスがあります。AzureでWCFにアクセスできない

デベロッパーファブリックでテストすると、自分のWebページ(他のWebロール)から問題なく動作します。

しかし、私は雲の中にそれを展開すると、ウェブロールが準備されているにもかかわらず、実行されていないようです。

私は私のWCFサービスの公開のいずれかの方法でGETを行うにはフィドラーを使用する場合は、私が取得: xxxxxxxxxxxxxx.cloudapp.netへ

[フィドラー]接続に失敗しました。 例外テキスト:接続試行 接続先が が正しく 一定期間後に応答しなかった、または接続されたホストがYYYYYYYYYYYYYY

これは、サービスの構成です 応答に失敗したため、確立された接続が を失敗したため失敗しました。 :

<?xml version="1.0" encoding="utf-8"?> 
<ServiceDefinition name="GovGuard" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"> 
    <WebRole name="GovGuard.Services"> 
    <Sites> 
     <Site name="Web"> 
     <Bindings> 
      <Binding name="GuardServiceEndpointBinding" endpointName="GuardServiceEndpoint" /> 
     </Bindings> 
     </Site> 
    </Sites> 
    <ConfigurationSettings> 
     <Setting name="DevelopmentConnectionString" /> 
     <Setting name="GovGuardStorageConnectionString" /> 
    </ConfigurationSettings> 
    <Endpoints> 
     <InputEndpoint name="GuardServiceEndpoint" protocol="http" port="81" /> 
    </Endpoints> 
    <Imports> 
     <Import moduleName="Diagnostics" /> 
    </Imports> 
    <LocalResources> 
     <LocalStorage name="MyCompany.GovGuard.Services.svclog" sizeInMB="1000" cleanOnRoleRecycle="false" /> 
    </LocalResources> 
    </WebRole> 
    <WebRole name="GovGuard.Web"> 
    <Sites> 
     <Site name="Web"> 
     <Bindings> 
      <Binding name="GuardWebEndpointBinding" endpointName="GuardWebEndpoint" /> 
     </Bindings> 
     </Site> 
    </Sites> 
    <ConfigurationSettings> 
     <Setting name="GuardServiceUrl" /> 
     <Setting name="DevelopmentConnectionString" /> 
     <Setting name="GovGuardStorageConnectionString" /> 
    </ConfigurationSettings> 
    <Endpoints> 
     <InputEndpoint name="GuardWebEndpoint" protocol="http" port="80" /> 
    </Endpoints> 
    <Imports> 
     <Import moduleName="Diagnostics" /> 
    </Imports> 
    <LocalResources> 
     <LocalStorage name="MyCompany.GovGuard.Web.svclog" cleanOnRoleRecycle="false" sizeInMB="1000" /> 
    </LocalResources> 
    </WebRole> 
</ServiceDefinition> 

(編集) 問題の私の調査では、それは、このことがあります私は、ファイルの参照としてMicrosoft.SqlServer.Typesアセンブリを使用しますWCFプロジェクト私はcopy-local = trueを使用してアセンブリをbinフォルダにコピーし、.csxファイルにパッケージ化しています。しかし、Microsoft.SqlServer.TypesにはSqlServerSpatial.dllライブラリ(アセンブリではない)も必要です。そのDLLをビンにコピーするためのポストビルドスクリプトを作成しましたが、成功しませんでした。

誰かが.csxファイルにdll(アセンブリではない)をパッケージ化する方法を手伝ってくれるかもしれません。 ..

ここでそれを見つけた(編集) :あなたはセルフホスティングサービスをしようとしている場合http://msdn.microsoft.com/en-us/gg271395

+0

いくつかのコードを共有しなければならない場合があります。よくある間違いは、ポートが80以外のものに設定されていることです.ServiceDefinition.csdefを確認したい場合があります。 – smarx

答えて

1

最後に解決策:32ビットWin7マシンで開発し、私のマシンからSqlServerSpatial.dllをWCFプロジェクトにコピーしました(Output DirectoryおよびBuildAction Contentへのコピーを使用)。そのライブラリは32ビットだったので、クラウドに奇妙なエラーメッセージが表示されました。私は64ビット版でライブラリを更新し、現在はクラウドにデプロイした後すべてが動作します!

1

WCFはうまく再生されません。

HTTP.sysの登録はローカルマシン名で行われ、負荷分散名を受け入れるワイルドカード登録はできません。あなたが持っているオプションは、内部エンドポイントを使用し、あなたのWebホストからワーカーロールのIPを接続しようとすることです。

私がやったことは、WCFサービスをMVCエンドポイントに変換して、ワーカーの役割をWebアプリケーションにすることでした。最もエレガントではありませんが、機能しました。

+0

こんにちはアーロン。私のソリューションは機能します。 WCFはAzureの問題ではないはずですが、ネイティブライブラリを使用しているCLRライブラリを使用することに注意してください...私のケースでは、Azureの一部としてネイティブライブラリを含めなかったため、WCFサービス全体が実行されていませんでしたパッケージ! –

+0

それは素晴らしいです。私の問題はおそらく、何よりもWCFとの私の愛情/憎しみ関係に深く根ざしているでしょう。 –

関連する問題