У меня есть веб-сервис ASMX, работающий под IIS7 в классическом режиме. Эта услуга имеет следующий код:Null Reference получение 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()
Я теряюсь здесь, так как это очень простой обычный код ванили.
EDIT
Это становится еще более странным. Я добавил некоторый базовый код, просто задающийся вопросом, какие серверные переменные я могу получить в этот момент. Это терпит неудачу с тем же исключением, когда я пытаюсь получить все ключи:
System.NullReferenceException: Object ссылка не указывает на экземпляр объекта . в System.Web.Hosting.ISAPIWorkerRequestInProc.GetAdditionalServerVar (Int32 индекса) на System.Web.Hosting.ISAPIWorkerRequestInProc.GetServerVariable (String имени) в System.Web.HttpRequest.AddServerVariableToCollection (String имени) в системы. Web.HttpRequest.FillInServerVariablesCollection() на System.Web.HttpServerVarsCollection.Populate() на System.Web.HttpServerVarsCollection.get_AllKeys() на MyService.MyHelper()
Когда я смотрю g в коде кода выглядит так, как это может произойти, когда массив, который кэширует переменные сервера, не заполняется, и похоже, что это происходит, когда имеется нулевой указатель на некоторый Контекст ... который кажется довольно основной частью кода рамки ,
Я полагаю, что пришло время сжечь один из наших билетов на поддержку с Microsoft.
Да, я сделал, что привело к приведенному выше коду ;-) – JoshBerke