我想创建一个返回当前网站路径的函数。这是我在IDE中运行时的想法:
Public Shared Function WebsiteAbsoluteBaseUrl() As String
Dim RequestObject As System.Web.HttpRequest = HttpContext.Current.Request
Return "http://" & RequestObject.Url.Host & ":" & _
RequestObject.Url.Port & "/" & _
RequestObject.Url.Segments(1)
End Function
这看起来应该有用吗?有更直接的方式吗?
我正在尝试使用绝对网站路径替换html电子邮件中所有出现的标记“{WebSiteBaseUrl}”。
<A HREF="{WebSiteBaseUrl}Files/filename.pdf/>Some Text</A>
我不想解析模板并尝试理解它,以便在文件名的相对路径上使用MapPath函数。
生成的电子邮件将成为html电子邮件的html正文,因此我需要链接是绝对的。
<a href="http://websitename:80/SubmitOrder.aspxFiles/filename.pdf" target="_blank">Some Text</a>
我想我在IDE中运行的,在IDE中运行的是“RequestObject.Url.Segments(1)”返回虚拟文件夹的名称,并且在生产中它似乎返回了Web的名称页。我想这可能与IIS中如何设置网站有关。
这对于如何在生产中设置网站提出了什么建议?在用函数的结果替换{WebSiteBaseUrl}后,您如何建议我修改代码以产生正确的路径?这假设文件“filename.pdf”位于relativepath~ / files / filesname.pdf中。
答案 0 :(得分:1)
您可以使用Request.Url.AbsoluteUri
。 Server.MapPath(".")
会给你物理路径。
您还可以使用列出here的其他Request
属性。
答案 1 :(得分:0)
试试这个以获取网站的应用程序路径:
Public shared ReadOnly Property FullyQualifiedApplicationPath() As String
Get
Dim appPath As String = Nothing
Dim context As HttpContext = HttpContext.Current
If Not context Is Nothing Then
'Formatting the fully qualified website url/name
appPath = String.Format("{0}://{1}{2}{3}", _
context.Request.Url.Scheme, _
context.Request.Url.Host, _
IIf(context.Request.Url.Port = 80, String.Empty, ":" & context.Request.Url.Port), _
context.Request.ApplicationPath)
End If
Return appPath
End Get
End Property
或试试这个(刚刚成立):
HttpContext.Current.Request.UrlInternal