2014-06-19 4 views
0

최근 새 웹 응용 프로그램에서 웹 참조를 웹 참조가 아닌 서비스 참조로 추가했습니다. 대부분의 웹 서비스는 asmx 웹 서비스로 설계되었습니다.서비스 참조로 ASMX 웹 서비스를 추가하면 여러 끝 점이 생성됩니다.

는 서비스 참조를 추가 한 후 내 Web.config를 항상 다음과 같습니다 계약

엔드 포인트 구성 섹션 : 나는 그것을 소비 할 때

<bindings> 
    <basicHttpBinding> 
    <binding name="UserSoap" /> 
    </basicHttpBinding> 
    <customBinding> 
    <binding name="UserSoap12"> 
     <textMessageEncoding messageVersion="Soap12" /> 
     <httpTransport /> 
    </binding> 
    </customBinding> 
</bindings> 
<client> 
    <endpoint address="{{service URL}}" binding="basicHttpBinding" 
    bindingConfiguration="UserSoap" contract="User.UserSoap" 
    name="UserSoap" /> 
    <endpoint address="{{service URL}}" binding="customBinding" 
    bindingConfiguration="UserSoap12" contract="User.UserSoap" 
    name="UserSoap12" /> 
</client> 

그런 다음 내 응용 프로그램이 오류를 제공합니다 해당 계약의 둘 이상의 엔드 포인트 구성이 발견되어 'User.UserSoap'을로드 할 수 없습니다. 원하는 엔드 포인트 구성 섹션을 이름으로 표시하십시오.

수동으로 끝점 중 하나를 제거했지만이 문제를 해결하는 방법을 알고 싶습니다. 어떻게 이런 일이 일어나지 않도록 할 수 있습니까?

+1

엔드 포인트 이름으로 액세스 할 수 있습니까? 예를 들어,'var service = new User.UserSoapClient ("UserSoap")'? – Win

+0

나는 이것을 다음과 같이 소비한다 : (var userService = new UserSoapClient())를 사용하여 을 사용한다. {} 그리고 올바르게 작동하는 엔드 포인트 이름을 추가한다. – ArjaaAine

+0

그것이 유일한 해결책입니까, 왜 2 개의 끝점이 만들어 집니까? – ArjaaAine

답변

2

당신이 당신의 서비스에 대한 SOAP 1.2 지원을 제거하려는 경우, 당신은 당신의 Web.config에 다음을 포함합니다 :

<configuration> 
    <system.web> 
     <webServices > 
      <protocols> 
       <remove name="HttpSoap12"/> 
      </protocols>   
     </webServices> 
    </system.web> 
</configuration> 
그렇지 않으면

Add or remove SOAP 1.2 for ASMX services

, 당신은 엔드 포인트의 이름으로 접근해야합니다을 .

var service = new User.UserSoapClient("UserSoap") 
+0

고마워요. 내 경우에 대한 좋은 해결책 같다 :-) – ArjaaAine