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に設定する方法がわかりません。