У меня есть различные веб-страницы, которым необходимо создать URL-адрес для отображения или размещения его в отправленном сообщении электронной почты. Код, который я унаследовал, имел это значение для имени веб-сервера в общедоступной константе в общедоступном классе с именем FixedConstants. Например:
Public Const cdServerName As String = "WEBSERVERNAME"
Пытаясь улучшить это, я написал это:
Public Class UIFunction
Public Shared myhttpcontext As HttpContext
Public Shared Function cdWebServer() As String
Dim s As New StringBuilder("http://")
Dim h As String
h = String.Empty
Try
h = Current.Request.ServerVariables("REMOTE_HOST").ToString()
Catch ex As Exception
Dim m As String
m = ex.Message.ToString() 'Ignore this should-not-occur thingy
End Try
If h = String.Empty Then
h = "SomeWebServer"
End If
s.Append(h)
s.Append("/")
Return s.ToString()
End Function
Я пробовал разные вещи во время отладки, такие как HttpContext.Current.Request.UserHostName, и я всегда получаю пустую строку, которая выдает мою строку по умолчанию «SomeWebServer».
Я знаю, что Request.UserHostName или Request.ServerVariables("REMOTE_HOST") работает при вызове со страницы, но почему это возвращает пустое значение при вызове из вызываемого метода файла класса (например, UIFunction.vb)?