1

Azure に RESTful WCF サービスをデプロイしました。コントラクト操作の 1 つは、クライアントからアップロードされた画像ファイル (500kb 以下) を取得することになっています。現在、私のソリューションは、Azure コンピューター/ストレージ エミュレーターで問題なく実行されています。ただし、ソリューションを Azure にデプロイすると、クライアント (画像サイズは 133kb) からのアップロードが 413 Request Entity Too Large で失敗します。Azure が web.config で設定した構成を無視しているようです (これは Azure エミュレーターで正しく取得されます)。

この問題を解決する方法についてのヘルプは非常に高く評価されます。以下は、私のコードの関連するスニペットです。

インターフェース

namespace HappyBabiesSvc
{
    [ServiceContract]    
    public interface IHappyBabies

[OperationContract]
    [WebInvoke(UriTemplate = "/v1.0/locations/{locationID}/images",
        Method = "PUT")]
    void UploadNewImage(string locationID, Stream imageToUpload);

サービスの実装

<%@ ServiceHost Language="C#" Debug="true" Service="HappyBabiesSvc.HappyBabiesSvc" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

Web.config

<system.serviceModel>    
    <standardEndpoints>      
      <webHttpEndpoint>        
        <standardEndpoint maxReceivedMessageSize="655360"/>
      </webHttpEndpoint>
    </standardEndpoints>    
    <serviceHostingEnvironment multipleSiteBindingsEnabled="false"/>
    <services>
      <service name="HappyBabiesSvc.HappyBabiesSvc" behaviorConfiguration="ServiceConfiguration">
        <endpoint address="" binding="webHttpBinding"
          name="HappyBabiesService"
          contract="HappyBabiesSvc.IHappyBabies" />
      </service>
    </services>
    <bindings>
    <webHttpBinding>
      <binding maxBufferSize="655360"
        maxReceivedMessageSize="655360" transferMode="Streamed">
        <readerQuotas maxDepth="655360" maxStringContentLength="655360"
          maxArrayLength="655360" maxBytesPerRead="655360" maxNameTableCharCount="655360" />
      </binding>
    </webHttpBinding>
  </bindings>
  </system.serviceModel>
4

1 に答える 1

0

Stream である単一のパラメーターを持つメソッドのみを試してください。ストリーム パラメータは単独である必要があります。

[OperationContract] [WebInvoke(UriTemplate = "/v1.0/locations/{locationID}/images",Method = "PUT")] void UploadNewImage(Stream imageToUpload);

于 2013-08-08T08:38:02.587 に答える