【问题标题】:sHow to determine the path of the current web sites如何判断当前网站的路径
【发布时间】:2010-05-11 21:47:23
【问题描述】:

我想创建一个返回当前网站路径的函数。这是我在 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 中运行的 dev 中看到的是“RequestObject.Url.Segments(1)”返回虚拟文件夹的名称,而在生产中它似乎返回了 Web 的名称页。我想这可能与网站在 IIS 中的设置方式有关。

这对网站在生产环境中的设置方式有何建议?您建议我如何修改代码以在将 {WebSiteBaseUrl} 替换为函数结果后生成正确的路径?这假定文件“filename.pdf”在相对路径 ~/files/filesname.pdf 中。

【问题讨论】:

  • 你得到的结果是什么......并期待什么?

标签: asp.net vb.net


【解决方案1】:

您可以为此使用Request.Url.AbsoluteUriServer.MapPath(".") 会给你物理路径。

您也可以使用here 列出的其他Request 属性。

【讨论】:

    【解决方案2】:

    试试这个获取网站的应用路径:

        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
    

    【讨论】:

    • HttpContext.Current.Request.UrlInternal 是一个很好的建议,但我需要解析网络文件名。我只需要顶级文件夹。有什么建议,还是我应该解析?另外,请注意我编辑的问题。
    • 什么会返回我的“FullyQualifiedApplicationPath”属性?
    • 您的代码看起来很有希望。让我在一个liev 网站上试一试,我会告诉你,然后选择这个作为答案。
    猜你喜欢
    • 2015-03-19
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 2021-08-09
    • 1970-01-01
    相关资源
    最近更新 更多