none
ASP.NET WebRole でホストしている WCF サービスにクライアントからアクセスすると「HTTPサービスがビジー状態です」というエラーが発生する RRS feed

  • 質問

  • ASP.NET WebRole プロジェクトで、.svc ファイルを使って WCF サービスをホストしています。
    この WebRole を Windows Azure 本番環境にデプロイし、クライアントから WCF サービスにアクセスすると下記のエラーが発生します。

    (WCFサービスのエンドポイントアドレス) の HTTP サービスがビジー状態です。
    リモート サーバーがエラーを返しました: (503) サーバーを使用できません

    デプロイされた svc ファイルの URL を Web ブラウザで表示すると、サービスの説明ページが表示されるので、サービスの作成には成功しているようです。
    WCF サービスの呼び出しには、サービス参照ではなく、ChannelFactory で生成したチャネル使っています。

    ネットで調べたところ、WCF サービスのサービスビヘイビアで serviceThrottling を設定する対応方法をよく見かけたので試してみましたが、問題は解決しませんでした。

    開発環境は次のとおりです。

    • Visual Studio 2010
    • Windows Azure Tools for Microsoft Visual Studio 2010 1.2

    アドバイスをよろしくお願いします。


    なかむら(http://d.hatena.ne.jp/griefworker)
    2010年11月4日 2:13

回答

  • k.buchiさん、Mayomayoさん、返信ありがとうございます。

    さらに調べたところ、WCF サービスがクライアントに返しているデータに問題があったことが分かりました。

    WebRoleでホストしているWCFサービスは、列挙型のプロパティを持つクラスのインスタンスを返すようになっていました。そして、この列挙型のプロパティに定義外の値(具体的には0)を格納していたため、クライアント側でレスポンスを逆シリアル化するときに失敗しているようでした。

    プロパティに正しい値を格納するように修正したら、無事解決しました。(エラーメッセージのせいで、だいぶ遠回りをしてしまいました。。。)

     


    なかむら(http://d.hatena.ne.jp/griefworker)
    • 回答としてマーク なかむら 2010年11月8日 6:11
    2010年11月8日 6:08

すべての返信

  • こんにちは。

    同じようにゼロからASP.NET WebRoleを作成してWCFサービスを追加してみたりしたのですが、同じような現象にはなりませんでした。
    ※Azure上ではまた違う現象がでて嵌ってますが。。

    試しにDevelopmentFabricではなく、WebRoleプロジェクトのみをローカルのIIS上でホストさせてみましたが、再現せず。
    WCFTestClient.exe で確認もしてみましたが同様でした。

    一度、同じ現象になるか、ローカルでは動作するかも見られては如何でしょうか。(ローカルで動作させる場合はそれはそれで手間かかりそうですけど)

    ※関係ないと思いますが(試していないので)、System.ServiceModel.dll はローカルコピーをTrueにしています。

    また、IISの503エラーだと Azure OS上のイベントログに何か出力されているかもしれませんので、そちらもチェックしてみては如何でしょうか。

    あまりお役にたてずにすみません。

    取り急ぎ。

    2010年11月4日 8:11
    モデレータ
  • こんばんは。

    私も Azure にアップロードしてWCFサービスをWeb Role で動かしてみましたが特に問題はありませんでした。
    環境
    ・ .NET 4 C#
    ・ basicHttpBinding
    ・ ASP.NET 互換性の有効化 OFF

    WCFのテンプレートに記述されている空のサービスメソッドを呼び出しても同様のエラーになってしまうのでしょうか?

           public void DoWork()
            {}

     

    2010年11月4日 13:34
  • k.buchiさん、Mayomayoさん、返信ありがとうございます。

    さらに調べたところ、WCF サービスがクライアントに返しているデータに問題があったことが分かりました。

    WebRoleでホストしているWCFサービスは、列挙型のプロパティを持つクラスのインスタンスを返すようになっていました。そして、この列挙型のプロパティに定義外の値(具体的には0)を格納していたため、クライアント側でレスポンスを逆シリアル化するときに失敗しているようでした。

    プロパティに正しい値を格納するように修正したら、無事解決しました。(エラーメッセージのせいで、だいぶ遠回りをしてしまいました。。。)

     


    なかむら(http://d.hatena.ne.jp/griefworker)
    • 回答としてマーク なかむら 2010年11月8日 6:11
    2010年11月8日 6:08