0

WCFWebRoleに送信したい大量のデータに問題があります。(413)大きすぎるデータエラーが発生します。私はAzureとWCFでまったく新しいです。WCF(LargeObject.svc)に画像を送信するための新しいサービスを作成し、そのバインディングとエンドポイントを構成しようとしました。

これはServerSideCodeです:

 <system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_IImage" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647">
      <readerQuotas maxDepth="32"
               maxArrayLength="200000000"
               maxStringContentLength="200000000"/>
    </binding>
    <binding name="BasicHttpBinding_IRouteService"/>
  </basicHttpBinding>
  <customBinding>
    <binding name="CustomBinding_IRouteService">
      <binaryMessageEncoding />
      <httpTransport />
    </binding>
  </customBinding>
</bindings>
<client>
  <endpoint address="http://dev.virtualearth.net/webservices/v1/routeservice/routeservice.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IRouteService"
    contract="Route.IRouteService" name="BasicHttpBinding_IRouteService" />
  <endpoint address="http://dev.virtualearth.net/webservices/v1/routeservice/routeservice.svc/binaryHttp"
    binding="customBinding" bindingConfiguration="CustomBinding_IRouteService"
    contract="Route.IRouteService" name="CustomBinding_IRouteService" />
  <endpoint address="http://127.0.0.1:81/Implementation/LargeObject.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IImage"
            contract="ILargeObject" name="BasicHttpBinding_IImageSvc"/>
</client>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>
      <dataContractSerializer maxItemsInObjectGraph="1048576" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

WindowsPhoneにクライアントアプリケーションもあります。コードは次のとおりです。

string endPointAddress = (Application.Current as TravelerMobile.App).ServerUriString("LargeObject.svc");

        LargeObjectClient client = new LargeObjectClient(new BasicHttpBinding(),
            new EndpointAddress(endPointAddress));


        MemoryStream stream = new MemoryStream();
        WriteableBitmap wb = new WriteableBitmap(image);
        wb.SaveJpeg(stream, image.PixelWidth, image.PixelHeight, 0, 100);
        byte[] byteImage = stream.ToArray();

        client.AddImageAsync(new LargeObject.AddImageRequest
        {
            Image = byteImage,
            Latitude = latitude,
            Longitude = longitude,
            UserId = Helpers.GetUserId()
        });

また、maxRevievedプロパティとmaxBufferedプロパティを設定して、クライアント側でBasicHttpBindingを構成しようとしましたが、それでも機能しません。

何か案は?

psこれはWindowsAzureWCFプロジェクトなので、デフォルトのエンドポイントがありますが、maxReceivedMessageSizeに設定する方法がわかりません。

4

1 に答える 1

0

同じ問題が発生したstackoverflowで次のリンクを見つけました。これも機能することを願っています、Azure WCF Webroleエラー:リモートサーバーが予期しない応答を返しました:(413)リクエストエンティティが大きすぎます

MaxReceivedMessageSizeで転送される最大バイト数を作成したので、ReaderQuotasタグでこれを行う必要があると思います。

もう1つ、考慮しなければならないのは、使用しているストレージの種類はわかりませんが、ファイルに4MBを超えてアップロードできないストレージがいくつかあることです。たとえば、各ブロックブロブの場合、ブロックの最大サイズは4 MBであり、ページブロブの場合、最大サイズは4MBです。

msdnでこのリンクを確認することもできます。同じ問題がありました:http ://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/39bfad06-97c0-4a98-b9fb-87879bab9414

于 2013-02-19T20:57:29.827 に答える