Visual Studio 2010의 생성 된 webservice 프록시 클래스를 사용하여 .net 2.0 클라이언트에서 웹 서비스에 액세스합니다.테스트 및 프로덕션 웹 서비스 용 C# 프록시 클래스
이 모든 것은 정상적으로 작동하지만 문제는 webservice에 테스트 시스템 용 wsdl과 프로덕션 시스템 용 wsdl이 있다는 것입니다.
웹 서비스는 구조적으로 완전히 동일하지만 XML 네임 스페이스는 동일하지 않습니다.
내 코드에서 웹 서비스의 서비스 URL을 설정할 수 있으며 통신이 작동합니다 (SOAP 메시지를 로그 파일에 덤프하기 위해 TraceExtension을 사용합니다).하지만 직렬화 해제와 관련하여 예외가 발생합니다.
[(네임 스페이스 = "여기 testservice의 URL") System.Xml.Serialization.SoapTypeAttribute] :는 내가 테스트 시스템에서 WSDL 파일을 프록시 클래스를 생성하고이 같은 여러 속성을 추가하기 때문에이 생각
물론 프로젝트를 복사하여 웹 서비스를 프로덕션 서비스에 추가 할 수는 있지만 코드가 중복되어 미래의 두 프로젝트에서 향후 변경해야합니다. 물론 오류가 발생하기 쉽습니다. ,
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://PRODUCTION_SERVER_NAME/ProjectService">
<SOAP-ENV:Body>
<ns1:loginResponse xmlns:ns1="http://TEST_SERVER_NAME/ProjectService">
<login_result xsi:type="tns:LoginResult">
<errorcode xsi:type="xsd:integer">0</errorcode>
<errortext xsi:type="xsd:string">Successfully logged in</errortext>
<logincode xsi:type="xsd:string">wOmdlZMkIXVL4H8uTGU69hgpNsK1Cz3Q</logincode>
</login_result>
</ns1:loginResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
당신이 볼 수 있듯이 :
여기<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://TEST_SERVER_NAME/ProjectService">
<SOAP-ENV:Body>
<ns1:loginResponse xmlns:ns1="http://TEST_SERVER_NAME/ProjectService">
<login_result xsi:type="tns:LoginResult">
<errorcode xsi:type="xsd:integer">0</errorcode>
<errortext xsi:type="xsd:string">Successfully logged in</errortext>
<logincode xsi:type="xsd:string">wF3N5vdPsueL0aYlp41i6B8VTZEJztqx</logincode>
</login_result>
</ns1:loginResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
가 생산 웹 서비스에서 동일한 응답입니다 :
다음은 테스트 시스템 서비스에 대한 로그인 메소드를 호출하기위한 작업 반응이다 xmlns : ns1 속성은 항상 http://TEST_SERVER_NAME/ProjectService
인 반면 xmlns : tns 속성은 두 응답 만 다릅니다 (테스트 시스템의 WSDL과 함께 생성 된 프록시 클래스에서 오는 것 같습니다). logincode는 인증 토큰이며 항상 다를 것입니다.
이 문제에 대한 다른 해결책이 있습니까?
행운이 문제를 해결? – user324365