送信された電子メールメッセージに表示または配置するためにURLを作成する必要があるさまざまなWebページがあります。私が継承したコードは、FixedConstantsと呼ばれるパブリッククラスのパブリック定数のWebサーバーの名前にこの値を持っていました。例えば:
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)の呼び出されたメソッドから呼び出されたときにこれが空を返すのはなぜですか?