1

Attachment オブジェクトを受け取る次の wcf サービス メソッドがあり、Attachment クラスの定義は次のとおりです。

    [DataContract]
    public class Attachment
    {
        [DataMember]
        public int AttachmentId { get; set; }
        [DataMember]
        public String DMSFileId { get; set; }
        [DataMember]
        public String FileName { get; set; }
        [DataMember]
        public int? FileSize { get; set; }
        [DataMember]
        public String FileSource { get; set; }
        [DataMember]
        public byte[] File { get; set; }
    }

メソッド定義は次のとおりです。

[OperationContract]    
public int AddAttachment(DataTypes.Administration.Attachment attachment)
{
   return AttachmentBusinessLogic.AddAttachment(attachment);
}

メソッドが呼び出されると、次の例外が発生します: リモート サーバーが予期しない応答を返しました: (413) 要求エンティティが大きすぎます

エラーをグーグルで検索すると、多くのバインディング構成に出くわしましたが、どれも maxReceivedMessageSize や readerQuotas では機能しませんでした。

サービスとクライアントの両方の Web 構成を次に示します。

サービス

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
</system.serviceModel>

クライアント

    <system.serviceModel>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
        <behaviors>
          <endpointBehaviors>
            <behavior name="AdministrationBehavior">
              <dataContractSerializer maxItemsInObjectGraph="2147483647" />
            </behavior>
          </endpointBehaviors>
        </behaviors>
        <bindings>
          <basicHttpBinding>
            <binding name="BasicHttpBinding_IAdministrationService" sendTimeout="00:05:00"
                     openTimeout="00:05:00"
                     receiveTimeout="00:05:00"
                     maxReceivedMessageSize="2147483647"
                     maxBufferSize="2147483647"
                     maxBufferPoolSize="2147483647">
                <readerQuotas maxArrayLength="2147483647"
                              maxStringContentLength="2147483647" />
            </binding>
          </basicHttpBinding>
        </bindings>
        <client>
          <endpoint address="http://localhost:8001/AdministrationService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IAdministrationService" contract="AdministrationService.IAdministrationService" name="BasicHttpBinding_IAdministrationService" behaviorConfiguration="AdministrationBehavior" />
    </client>
</system.serviceModel>

この例外を克服する方法についての提案をお願いします。

4

3 に答える 3

0

作業する必要がある場所はWeb構成であり、データのサイズを設定できるサービス動作を追加する必要があります。たとえば、このように、

  </serviceBehaviors>
  <endpointBehaviors>
    <behavior name="SilverlightWCFLargeDataApplication">
      <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
    </behavior>
  </endpointBehaviors>
</behaviors>

それでも問題が解決しない場合は、ここにWeb構成を投稿してください。お役に立てば幸いです。

于 2013-01-14T03:11:49.307 に答える
0

別の投稿で wcf Web 構成ファイルを構成する手順に従って、なんとか解決しました。

タグを使用して WCF を構成する

于 2013-01-14T15:06:04.440 に答える
0

この設定を使用

 <basicHttpBinding>
        <binding maxReceivedMessageSize="2147483647"  messageEncoding="Text" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" >
          <readerQuotas  maxStringContentLength="525288"></readerQuotas>
        </binding>
      </basicHttpBinding>
于 2013-11-06T11:25:11.750 に答える