2009-06-11 1 views
2

기본 쿼리를 처리하는 WCF 서비스가 있습니다. 나는 기본적으로 박스 바인딩 (WSHttpBinding with default values)의 디폴트로 시작했다.WCF 바인딩 미세 조정

데이터 계약은 맞춤 개체 배열에 대한 것이며 각 개체의 크기는 약 6k입니다. 최대 5 개까지 (단일 트랜잭션으로) 보내면 정상적으로 작동합니다. 6 이상을 보내려고하면 다음 오류가 발생합니다.

"원격 서버에서 (400) 잘못된 요청을 반환했습니다."

나는 바인딩 일부를 연구하고,이 같은 클라이언트의 구성을 설정하려고 :

나는 유사 서비스 web.config 파일에 구성을 설정
<binding name="WSHttpBinding_IASRService" closeTimeout="00:10:00" 
     openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" 
     bypassProxyOnLocal="false" transactionFlow="false" 
     hostNameComparisonMode="StrongWildcard" 
     maxBufferPoolSize="50000000" maxReceivedMessageSize="50000000" 
     messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true" 
     allowCookies="false"> 
    <readerQuotas maxDepth="50000000" maxStringContentLength="50000000" 
       maxArrayLength="50000000" maxBytesPerRead="50000000" 
       maxNameTableCharCount="50000000" /> 
    <reliableSession ordered="true" inactivityTimeout="00:10:00" 
       enabled="false" /> 
</binding> 

그러나, 문제가 지속.

또한 app.config를 messageEncoding = "Mtom"으로 설정하려고 시도했지만 바인딩이 클라이언트와 서버간에 일치하지 않을 수 있다는 다른 바인딩 오류가 발생하여 지금 당장이를 제거했습니다. (Mtom이 서버 web.config에서도 지정되었지만) 또한 연구에서 각 바인딩 속성에 대해 명확한 간단한 설명을 찾지 못했습니다. 요약

, 나는 다음과 같은 질문에 대답하기 위해 노력하고있어 :

  1. 큰 요청이 잘못된 요청 오류를 생성하지 얻을하는 방법 오류
  2. 를 생성하지 않고 MTOM에 클라이언트를 설정하는 방법
  3. 바인딩 속성 각각에 대해 좋은 기본 참조가 있고이를 사용하는 방법이 있습니까?

답변

1

마침내 알아 냈습니다!

모든 장소의 SO에

참조 내 주요 문제를 해결

this question (# 1). 난 여전히 다양한 바인딩 WCF 속성을 구성하는 방법에 대한 명확한 설명을 찾고 있습니다. 온라인, 책 및 MSDN의 API 문서를 살펴 보았습니다. 누군가가 정말로 그것을 밖으로 철자하는 것을 알고 있다면, 여기에 그것을 게시하십시오. 구속력있는 세부 사항에 도달 할 때까지는 WCF가 상당히 직선적 인 것처럼 보입니다.

1

디버깅을 시작하기위한 가장 좋은 방법은 작동 방식입니다. 나는 Fiddler를 꺼내 클라이언트가 유효한 요청을 보내고 있는지 확인합니다.

서버 측 WCF를 변경할 때마다, 서버 프로젝트 클라이언트 측에서 다음 "업데이트 참조"를 다시 컴파일 (오른쪽 클릭 :

2

여기에 내가 당신의 # 2 하드 방법을 배운 팁입니다 서비스 참조).

+0

이 내용은 서버 측 web.config 파일을 변경하는 경우에만 적용됩니까? – alchemical

+0

예, WCF 매개 변수와 관련된 섹션을 변경하는 경우 – vidalsasoon