참고 :.NET SOAP 확장이 MethodInfo에서 NullReferenceException을 던지고 있습니까?
모두 안녕하세요,
내가 로깅 웹 서비스에서 일하고 있어요 IDE로 .NET 2.0을 사용하고 VS2005 저희 데이터베이스 호출, 마지막으로 SoapExtension 구성하고 매우 제거하여 실행되었다 다른 프로젝트에서 이식 된 다운 구현 구성 파일에서 모든 메소드에 대해 실행되도록 설정했습니다. 내 웹 서비스 및 비누 확장 화재를 호출 할 때는, NullPointerException가 SoapServerMessage가 MethodInfo 속성을 호출하려고 할 때 발생합니다 :
LogInput 방법은 processMessage를 (그 SOAPMessage)의 BeforeDeserialize 단계에서라고System.Web.Services.Protocols.SoapException: There was an exception running the extensions specified in the config file.
---> System.NullReferenceException: Object reference not set to an instance of an object.
at System.Web.Services.Protocols.SoapServerProtocol.get_MethodInfo()
at System.Web.Services.Protocols.SoapServerMessage.get_MethodInfo()
at MyService.SOAPLoggingExtension.LogInput(SoapMessage message)
at MyService.SOAPLoggingExtension.ProcessMessage(SoapMessage message)
at System.Web.Services.Protocols.SoapMessage.RunExtensions(SoapExtension[] extensions, Boolean throwOnException)
at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
--- End of inner exception stack trace ---
at System.Web.Services.Protocols.SoapServerProtocol.Initialize()
at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)
:
SoapMessageStage.BeforeDeserialize:
CopyStream(_oldStream, _newStream);
_newStream.Position = 0;
if(_enabled)
LogInput(message);
break;
LogInput 메서드는 로그하려고하는 메시지 개체의 MethodInfo 속성에 액세스하려고 할 때 실패합니다. 여기서 속성이 호출 코드 블록이다
message.MethodInfo가 호출entry = new MyServerLogEntry();
entry.ServerURL = message.Url;
entry.Method = (message.MethodInfo == null) ? null : message.MethodInfo.Name;
그것이 SoapServerProtocol.get_MethodInfo (까지 기포) 및 null 참조 예외가 던져 얻는다. 내가 봤 거든, 여기 주위에 스택 오버플로를 확인하지만, 왜 MethodInfo 속성이 예외를 던질 수 있는지 찾을 수 없습니다.
웹 서비스 호출 중에이 MethodInfo 속성이 제대로 초기화되었는지 확인하는 방법을 아는 사람이 있습니까?
추가 정보 : MethodInfo 속성에 액세스하지 않으면 확장이 제대로 작동하고 내 데이터베이스에 기록됩니다.