WCF 예외 수정 System.ArgumentException: 이름이'UriTemplateMatchResults'인 속성이 이미 존재합니다.

2652 단어 exceptionWCF

인터페이스 정의:

[OperationContract]
[WebInvoke(
    Method = "POST",
    UriTemplate = "AddUser/{userinfo}",
    BodyStyle = WebMessageBodyStyle.Bare,
    RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json)]
string AddUser(string userinfo);

문제 설명:

-  256 , 。
-  256 ,  BadRequest  。

일반적으로 이것은 설정된 전송 매개 변수의 길이 문제이지만, 설정 파일에는 이미 설정된 길이가 있습니다.
<bindings>
  <webHttpBinding>
    <binding name="webHttpBinding" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
    </binding>
  </webHttpBinding>
</bindings>

<services>
  <service behaviorConfiguration="webHttpBehavior" name="WebService">
    <endpoint address="web" behaviorConfiguration="webHttpBehavior" binding="webHttpBinding" bindingConfiguration="webHttpBinding" contract="IWebService" name="webservice"/>
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:9999/service"/>
      </baseAddresses>
    </host>
  </service>

문제 추적:


로컬 svclog 파일에 구체적인 오류 정보를 기록하기 위해 프로필에 다음과 같은 설정을 추가합니다.
<system.diagnostics>
  <sources>
    <source name="System.ServiceModel" switchValue="Warning" propagateActivity="true">
      <listeners>
        <add name="xml" />
      </listeners>
    </source>
  </sources>
  <sharedListeners>
    <add name="xml" type="System.Diagnostics.XmlWriterTraceListener" initializeData="F:\wcf.svclog" />
  </sharedListeners>
</system.diagnostics>

추적된 오류 메시지에는 다음 문장이 있습니다.
System.ArgumentException:  “UriTemplateMatchResults” 。

문제 해결:


여기서 가장 직접적인 해결 방법을 제공할 때 인터페이스의 UriTemplate 정의를 직접 차단합니다.
[OperationContract]
[WebInvoke(
    Method = "POST",
    //UriTemplate = "AddUser/{userinfo}",
    BodyStyle = WebMessageBodyStyle.Bare,
    RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json)]
string AddUser(string userinfo);

좋은 웹페이지 즐겨찾기