문제

최근,우리가 예외는 다음과 같이 우리입니다.NET(.asmx)webservices:

System.Web.Services.Protocols.SoapException: Server was unable to read request. ---> System.InvalidOperationException: There is an error in XML document (868, -3932). ---> System.Xml.XmlException: '.', hexadecimal value 0x00, is an invalid character. Line 868, position -3932.
   at System.Xml.XmlTextReaderImpl.Throw(Exception e)
   at System.Xml.XmlTextReaderImpl.Throw(String res, String[] args)
   at System.Xml.XmlTextReaderImpl.Throw(Int32 pos, String res, String[] args)
   at System.Xml.XmlTextReaderImpl.ThrowInvalidChar(Int32 pos, Char invChar)
   at System.Xml.XmlTextReaderImpl.ParseNumericCharRefInline(Int32 startPos, Boolean expand, BufferBuilder internalSubsetBuilder, Int32& charCount, EntityType& entityType)
   at System.Xml.XmlTextReaderImpl.ParseText(Int32& startPos, Int32& endPos, Int32& outOrChars)
   at System.Xml.XmlTextReaderImpl.ParseText()
   at System.Xml.XmlTextReaderImpl.ParseElementContent()
   at System.Xml.XmlTextReaderImpl.Read()
   at System.Xml.XmlTextReader.Read()
   at System.Web.Services.Protocols.SoapServerProtocol.SoapEnvelopeReader.Read()
   at System.Xml.XmlReader.ReadElementString()
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read14_SendErrlog()
   at Microsoft.Xml.Serialization.GeneratedAssembly.ArrayOfObjectSerializer12.Deserialize(XmlSerializationReader reader)
   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
   --- End of inner exception stack trace ---
   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle, XmlDeserializationEvents events)
   at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle)
   at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
   --- End of inner exception stack trace ---
   at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters()
   at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()

어떻게 디버깅할 수 있습니까 예외?이 예외는 보고 받고 우리에게에서 비누 필터다 보이는 위한 예외 메시지입니다.단=SoapMessageStage.AfterSerialize.

하는 방법은 없을 얻을 원래의 비누 요청이 있으십니까?나는 어떻게 잘못된 문자에서 선 868,열 -3932?어떻게 할 수 있는 열 3932?

도움이 되었습니까?

해결책

이것은 하나의 자극하는 것들에 대해 Microsoft 웹 서비스 접근 방식을 요구할 수 없으로 병렬화된 객체에서 당신의 웹사 방법을 서명한 후의 서비스 소비자 복잡한 메시지입니다.고,요청이지 않은 그것으로 귀하의 웹 서비스할 수 없기 때문에 deserialzied 그래서 당신은 처리할 수 없는 오류 정상적입니다.

내가 무엇을 할 것이 도움이 이러한 유형의 문제를 만들어 새로운 SoapExtension 는 단순히 당신 출력의 원 XML 목적지는 당신을 위해 편리한(파일이나 추적 읽기 명령 프롬프트를 엽 또는 어떤 다른 사람처럼 당신).코드에 갈 것 BeforeDeserialize 단계입니다.를 사용할 수도 있습니다 SoapExtension 을 통해 web.config 이벤트에서 당신은 원하는 조사 중 하나 이러한 문제를 해결합니다.의 단점을 사용하여 web.config 추가 SoapExtension 은 그것에 대해 활성화될 전체 웹 응용 프로그램입니다.추가할 수 있습니다 몇 가지 추가적인 맞춤 구성할 수 있는 서비스만을 로그 정보를 위해 특정한 엔드포인트 또는 특정 웹 방법을 원하는 경우.

일반적으로,을 보는 것만으로 들어오는 XML 당신이 볼 수 있는 문제입니다.그렇지 않다면,당신이 시도할 수 있었을 수동으로 실행 캡처 XML 을 통해 작은 프로그램 호출하는 XML serializer 고 당신이 무엇인지 찾을 수 있습니다.또 다른 유용한 도구입 웹서비스 스튜디오 2 는 테스트를 활용할 수 있는 데이터를 입력하고 호출 서비스(또한 제출해 원하는 XML 을).

의 측면에서 귀사의 특정 문제,내 가/추측합니다.그것처럼 보이 ASCII 문자 null 은 인코딩되고 전송하여 서비스는 잘못됨에 따라 XML Spec.대답은 간단을 보내지 않는다.하지만 사람을 보내는 캐릭터가?입니다.NET 클라이언트?당신이 통제가 있는 클라이언트?업무를 수행해야 하는 경우에는 주위의 다른 사람의 버그,그로 교체해야 할 수 있습 잘못된 문자(들)다른 문자(아마도 빈 문자열).

다른 팁

다른 soapextension을 사용하여 원본 메시지를 얻을 수 있어야합니다. 실제로, 동일한 확장 기능을 수정하여 입력 사본을 만들고 예외가없는 경우 버릴 수 있습니다. 그런 다음 예외가 발생하면 원래 입력을 사용할 수 있습니다.

Fiddler와 같은 외부 도구를 사용하여 보내는 내용을 볼 수도 있습니다.

참고 : soapexception.message는 의도적으로 모호한 모호합니다.

특정 사례의 경우 John의 조언을 받고 Fiddler를 설치하여 실제 HTTP 트래픽을 모니터링하고 전선에서 메시지를 봅니다.

예외가 나에게 뛰어 넘는 부분은 "16 진수 0x00, 유효하지 않은 캐릭터"이지만, 당신이 가리키는 줄 번호를 언급했듯이, 그것은 구체적인 것이 아닙니다.

서비스에 어떤 종류의 매개 변수를 전달합니까? 비누 확장으로 어떤 종류의 사용자 정의 인코딩을하고 있습니까? 추가 비누 헤더가 추가되고 있습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top