s如何确定当前网站的路径

时间:2010-05-11 12:11:36

标签: asp.net vb.net

我想创建一个返回当前网站路径的函数。这是我在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中。

2 个答案:

答案 0 :(得分:1)

您可以使用Request.Url.AbsoluteUriServer.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