큰 요청을 서버로 보내고 큰 데이터를 얻으려고합니다. 그래서 데이터 서비스에 일괄 요청을 사용합니다. 이 요청의 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)
at System.Uri..ctor(String uriString, UriKind uriKind)
at System.Data.Services.RequestUriProcessor.GetAbsoluteUriFromReference(String reference, Uri absoluteServiceUri)
at System.Data.Services.BatchServiceHost..ctor(Uri absoluteServiceUri, BatchStream batchStream, String contentId, String boundary, StreamWriter writer)
at System.Data.Services.DataService`1.BatchDataService.CreateOperationContextFromBatchStream(Uri absoluteServiceUri, BatchStream batchStream, HashSet`1 contentIds, String boundary, StreamWriter writer)
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>