locked
Silverlight と WCF の連携 RRS feed

  • 質問

  • 現在、以下の環境で Silverlight3.0 + WCF 動作を確認しています。

     Microsoft Visual Studio
     Microsoft Visual C# 2008
     Microsoft Silverlight 3.0

    Silverlight からファイル(.txt、.xls、.doc、.pdf)をバイナリーでアップロードし、WCFからサーバにファイルを配置することを想定したサンプルを作成しています。

    サービスのバインディングはbasicHttpBindingを指定しています。

    デバックをしてみるのですが、クライアント側で以下の内容のエラーが表示されます。

    -----
      InnerException: System.Net.WebException
           Message="リモート サーバーが次のエラーを返しました: NotFound。"
           StackTrace:
                場所 System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
                場所 System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
                場所 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
    -----

    ***ClientChannelクラスのEnd***メソッドでエラーが発生しているようです。

    ServiceReferences.ClientConfigでバッファサイズやタイムアウトなどを指定しても状況は変わりません。

    -----
        <system.serviceModel>
            <bindings>
                <basicHttpBinding>
                    <binding name="BasicHttpBinding_IFileUploadService"
                             maxBufferSize="2147483647"
                             maxReceivedMessageSize="2147483647"
                             closeTimeout="10:00:00"
                             openTimeout="10:00:00"
                             receiveTimeout="10:00:00"
                             sendTimeout="10:00:00"
                             >
                        <security mode="None" />
                    </binding>
                </basicHttpBinding>
            </bindings>
    -----

    稀にサーバ側までバイナリのデータが渡り、.txtや.xlsが転送できたこともありましたが、ほぼ、クライアント側で失敗することが多い状況です。
    このような現象の原因を探るのに苦慮しております。
    原因を調査するにあたり、探ってみる箇所などありましたらご教授頂けないでしょうか。

    2009年11月24日 0:30

回答

  • NotFoundということは「Webサービスが見つからない」のが主な原因と思われます。
    ・デバッグ時にIISでホストしているか
    ・サービス側(サーバー)とプロキシ側(クライアント)でBindingやEndPointAddressの相違が無いか
    ・ClientAccessPolicyファイルをWEBサーバールートに配置しているか
    ・サービスのURLを直接ブラウザで参照して表示できるか
    等実行環境に関する詳細情報をもう少し記述していただくと回答頂けるかもしれませんよ。
    • 回答としてマーク scsys14 2009年11月24日 13:02
    2009年11月24日 4:19

すべての返信

  • NotFoundということは「Webサービスが見つからない」のが主な原因と思われます。
    ・デバッグ時にIISでホストしているか
    ・サービス側(サーバー)とプロキシ側(クライアント)でBindingやEndPointAddressの相違が無いか
    ・ClientAccessPolicyファイルをWEBサーバールートに配置しているか
    ・サービスのURLを直接ブラウザで参照して表示できるか
    等実行環境に関する詳細情報をもう少し記述していただくと回答頂けるかもしれませんよ。
    • 回答としてマーク scsys14 2009年11月24日 13:02
    2009年11月24日 4:19
  • お世話になっております。

    返信ありがとうございます。

    >NotFoundということは「Webサービスが見つからない」のが主な原因と思われます。
    >・デバッグ時にIISでホストしているか
    >・サービス側(サーバー)とプロキシ側(クライアント)でBindingやEndPointAddressの相違が無いか
    >・ClientAccessPolicyファイルをWEBサーバールートに配置しているか
    >・サービスのURLを直接ブラウザで参照して表示できるか

    さしあたり、ポリシーファイルをWEBサーバーのルートに配置してみたところ、サービスのアプリケーションが動作しているサーバへアクセスするようになりました。
    ポリシーファイルはサービスのアプリが動作しているサーバに配置すればよいと考えていました。
    ポリシーファイルについて自分なりに調べてみます。

    ありがとうございました。

    2009年11月24日 13:02