클래식 모드에서 IIS7에서 실행되는 ASMX 웹 서비스가 있습니다. 이 서비스의 코드는 다음과 같습니다.Null 참조 REMOTE_ADDR 가져 오기
try
{
env.ExternalIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
catch (Exception ex)
{
LogWriter.WriteError(ex);
env.ExternalIP="000.000.000.000";
}
결과로 다음과 같은 스택 추적이 발생합니다. 난 단지 무고한 사람들을 보호하기 위해 여기 usercode 호출 스택의 이름을 수정 :
Message: An Exception of type: NullReferenceException occured in method: GetAdditionalServerVar
ExceptionMsg: Object reference not set to an instance of an object.
===Stack Trace===
at System.Web.Hosting.ISAPIWorkerRequestInProc.GetAdditionalServerVar(Int32 index)
at System.Web.Hosting.ISAPIWorkerRequestInProc.GetServerVariable(String name)
at System.Web.HttpRequest.AddServerVariableToCollection(String name)
at System.Web.HttpRequest.FillInServerVariablesCollection()
at System.Web.HttpServerVarsCollection.Populate()
at System.Web.HttpServerVarsCollection.Get(String name)
at System.Collections.Specialized.NameValueCollection.get_Item(String name)
at MyService.MyMethod()
내가 여기에이 같은 손실에있어 일반 바닐라 코드 아주 기본적인 것입니다.
편집
이 심지어 낯선 가져옵니다. 나는이 시점에서 얻을 수있는 서버 변수를 궁금해하는 기본적인 코드를 추가했다.
System.NullReferenceException : 개체의 인스턴스로 설정되지 않았습니다 객체 참조 I 시도하고 모든 열쇠를 얻을 때이 같은 예외와 함께 실패합니다. 시스템에서 System.Web.HttpRequest.AddServerVariableToCollection에서 System.Web.Hosting.ISAPIWorkerRequestInProc.GetServerVariable에서 System.Web.Hosting.ISAPIWorkerRequestInProc.GetAdditionalServerVar (INT32 인덱스) (문자열 명) (문자열 이름)에서. MyService.MyHelper에서 System.Web.HttpServerVarsCollection.get_AllKeys() 에서 System.Web.HttpServerVarsCollection.Populate() 에서 Web.HttpRequest.FillInServerVariablesCollection() () 나는
을 찾는 때 g는 프레임 워크 코드에서 서버 변수를 캐싱하는 배열이 채워지지 않은 상황에서 발생할 수 있습니다. 그리고 Context에 대한 null 포인터가있을 때 발생합니다 ... 프레임 워크 코드의 핵심 부분처럼 보입니다. .
Microsoft 지원 티켓 중 하나를 태울 때가 된 것 같습니다.
예 위의 코드를 이끌어 냈습니다. – JoshBerke