2013-01-24 2 views
1

큰 요청을 서버로 보내고 큰 데이터를 얻으려고합니다. 그래서 데이터 서비스에 일괄 요청을 사용합니다. 이 요청의 URI는 "hxxp : //company/Test.svc/$batch"와 같습니다. 내가webservice에 대한 일괄 처리 쿼리가 "Uri 문자열이 너무 깁니다."

내가 보내 유효한 POST 요청 닷넷 4.0을 사용하고 있습니다 :

DataServiceRequest[] Request = new DataServiceRequest[]{new DataServiceRequest<TTable>((query).RequestUri)}; 
try 
{ 
    DataServiceResponse dsr = WebService.ExecuteBatch(Request); 
    foreach (QueryOperationResponse qr in dsr) 
    { 
     if (qr.Query.ElementType == typeof(TTable)) 
     { 
      foreach (TTable item in qr) { list.Add(item); } 
     } 
    } 
} 

을 그리고 오류 메시지가받을 : 그것은 구문 분석 할 때

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> 
    <code></code> 
    <message xml:lang="ru-RU">An error occurred while processing this request.</message> 
    <innererror> 
    <message>Invalid URI: The Uri string is too long.</message> 
    <type>System.UriFormatException</type> 
    <stacktrace> at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)&#xD; 
    at System.Uri..ctor(String uriString, UriKind uriKind)&#xD; 
    at System.Data.Services.RequestUriProcessor.GetAbsoluteUriFromReference(String reference, Uri absoluteServiceUri)&#xD; 
    at System.Data.Services.BatchServiceHost..ctor(Uri absoluteServiceUri, BatchStream batchStream, String contentId, String boundary, StreamWriter writer)&#xD; 
    at System.Data.Services.DataService`1.BatchDataService.CreateOperationContextFromBatchStream(Uri absoluteServiceUri, BatchStream batchStream, HashSet`1 contentIds, String boundary, StreamWriter writer)&#xD; 
    at System.Data.Services.DataService`1.BatchDataService.HandleBatchContent(Stream responseStream)</stacktrace> 
    </innererror> 
</error> 

그것은 서버 측 예외 것 같아를 occures 큰 uri. 이 제한을 피하는 방법은 무엇입니까?

수정 된 (16:00 28/01/2013)

IIS 구성 :

<?xml version="1.0"?> 
<configuration> 
    <system.webServer> 
    <security> 
     <requestFiltering> 
     <requestLimits maxAllowedContentLength="500000000" maxQueryString="209715000" maxUrl="2000000"></requestLimits> 
     </requestFiltering> 
    </security> 
    <directoryBrowse enabled="true"/> 
    <httpErrors errorMode="Detailed"/> 
    <caching enabled="false" enableKernelCache="false"/> 
    </system.webServer> 
    <system.web> 
    <httpRuntime executionTimeout="4800" 
     maxQueryStringLength="2097150" 
     maxUrlLength="2097150" 
     relaxedUrlToFileSystemMapping="true" 
     maxRequestLength="500000000" 
     requestValidationMode="4.0"/> 
    <customErrors mode="Off"/> 
    <compilation debug="true" targetFramework="4.0"> 
     <assemblies> 
     <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
     <add assembly="System.Data.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
     <add assembly="System.Data.Services.Client, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" /> 
     </assemblies> 
    </compilation> 
    </system.web> 
</configuration> 

답변