2014-11-03 17 views
5

tôi có dịch vụ WCF, và tôi có một phương pháp khi tôi muốn vượt qua tham số chuỗi lớn (hơn 1mb)(413) Request Entity Too Large

tôi chạy WCF này và trong WCF Kiểm tra khách hàng tôi đã thay đổi cấu hình như được hiển thị bên dưới:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.serviceModel> 
     <bindings> 
      <basicHttpBinding> 
       <binding name="BasicHttpBinding_IMyService" sendTimeout="00:05:00" 
        maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"> 
        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" 
         maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
       </binding> 
      </basicHttpBinding> 
     </bindings> 

Và khi tôi thử gọi phương thức này, tôi vẫn có thực thể yêu cầu 413 quá lớn.

+3

Bạn có thay đổi nó trên * cả * kết thúc không? Máy chủ và máy khách? –

+1

tôi đã thêm cho khách hàng: nhưng tôi vẫn gặp lỗi tương tự – Robert

Trả lời

4

Như Matt Burland đã đề xuất, bạn cần định cấu hình kết thúc dịch vụ cũng như ứng dụng khách. Xem Configuring Services Using Configuration Files để biết chi tiết. Nhiệm vụ không khác nhiều so với những gì bạn đã làm trên đầu máy khách của dây. Đây là một đoạn trích từ bài viết nói trên.

WCF sử dụng hệ thống cấu hình cấu hình hệ thống của .NET Framework. Khi định cấu hình dịch vụ trong Visual Studio, hãy sử dụng tệp Web.config hoặc tệp App.config để chỉ định cài đặt. Việc chọn tên tệp cấu hình được xác định bởi môi trường lưu trữ bạn chọn cho dịch vụ. Nếu bạn đang sử dụng IIS để lưu trữ dịch vụ của bạn, hãy sử dụng tệp Web.config. Nếu bạn đang sử dụng bất kỳ môi trường lưu trữ khác , hãy sử dụng tệp App.config.

tôi sẽ đề nghị không đặt tất cả mọi thứ để int.MaxValue như có một bộ MaxReceivedMessageSize tới 2GB mở ra cho bạn để DOS (Denial-Of-Service) tấn công và những thứ tương tự. Những nhận xét phần của MaxReceivedMessageSize sở hữu thậm chí khẳng định:

Kích thước của các thông điệp mà có thể được nhận vào dây theo dịch vụ sử dụng WSHttpBindingBase giáp dung lượng bộ nhớ phân bổ cho mỗi tin nhắn. Điều này bị ràng buộc về kích thước tin nhắn được dự định để giới hạn tiếp xúc với các cuộc tấn công từ chối dịch vụ (DoS).

Bạn có thể đang cố gắng làm cho nó hoạt động tại thời điểm này, nhưng không nên để nó theo cách này.

4

Tôi cũng phải đối mặt với cùng một vấn đề và giải quyết được sự cố. Mã làm việc-

(413) Request Entity Too Large in WCF Làm theo mã app.config. Điều này đang hoạt động và sử dụng tính năng này tôi có thể gửi tệp lớn

<bindings> 
    <webHttpBinding> 
     <binding name="myBinding" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" transferMode="Streamed" > 
      <readerQuotas maxDepth="64" maxArrayLength="2147483647" maxStringContentLength="2147483647"/> 
     </binding> 
    </webHttpBinding> 
</bindings> 
<services> 
    <service behaviorConfiguration="ForecastREST_API.RESTServiceImplBehavior" name="ForecastREST_API.RestServiceImpl"> 
     <endpoint address="http://localhost:59624/RestServiceImpl.svc" binding="webHttpBinding" contract="ForecastREST_API.IRestServiceImpl" behaviorConfiguration="Web" bindingConfiguration="myBinding"> 
      </identity> 
     </endpoint> 
     <endpoint address="mex" binding="webHttpBinding" contract="IMetadataExchange"/> 
    </service> 
</services> 
<behaviors> 
    <endpointBehaviors> 
     <behavior name="Web"> 
      <dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
      <webHttp defaultOutgoingResponseFormat="Json" automaticFormatSelectionEnabled="true" /> 
      <dispatcherSynchronization asynchronousSendEnabled="true" /> 
     </behavior> 
    </endpointBehaviors> 
    <serviceBehaviors> 
     <behavior name="ForecastREST_API.RESTServiceImplBehavior"> 
      <dataContractSerializer maxItemsInObjectGraph="2147483647" /> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
     </behavior> 
    </serviceBehaviors> 
</behaviors> 
+0

Chỉ liên kết câu trả lời được khuyến khích – Eldho

+0

@Eldho Tôi cũng đã thêm mã làm việc. –

+0

Xin lỗi, một số khác đã bỏ phiếu xuống số – Eldho

Các vấn đề liên quan