【问题标题】:ServerVariables["UNENCODED_URL"] is empty when I try to access it in my MVC Action当我尝试在我的 MVC 操作中访问 ServerVariables["UNENCODED_URL"] 时,它是空的
【发布时间】:2011-10-14 13:03:39
【问题描述】:

我正在为一个 404 页面编写一个包罗万象的操作方法,该方法采用请求的 URL,使用正则表达式 (\w+)* 提取冗长的位,并将这些位(以空格分隔)发送到搜索引擎以生成一个列表的建议页面。

问题是,ServerVariables["UNENCODED_URL"] 在 Action 方法中似乎不可用。但是,其他服务器变量可用的。

我可以将ServerVariables["URL"]ServerVariables["QUERY_STRING"] 结合使用,两者都可用。但在某些情况下,这会遗漏 URL 中可能包含有关用户意图的有效信息的部分。

例如,如果格式错误的 URL 是

/test/007/words/something-with-a-dot.xyz/these-words-are-neglected/?stuff-in-querystring

然后发现“URL”和“QUERY_STRING”分别为"/test/007/words/something-with-a-dot.xyz""stuff-in-querystring"

“URL”会直截了当地忽略看起来像文件扩展名之后的所有内容。所以这还不够。

那么 UNENCODED_URL 是怎么回事?
我怎样才能得到它的等价物?

【问题讨论】:

    标签: asp.net-mvc request.servervariables


    【解决方案1】:

    您是否尝试过 HTTP_URL 变量?看起来它返回原始的编码 URL,例如“/vdir/default.asp?querystring” - 来自 MSDN。

    Source

    另外 - 如果您在控制器的操作方法中,您可以(应该?)使用 HttpContext 代替 SERVER[someProperty]。比如:

    var Url = HttpContext.Request.RawUrl;
    

    返回当前请求的完整 URL。

    【讨论】:

    • 就是这样! -- HttpContext.Request.RawUrl。顺便说一句,我正在尝试 HttpContext.Request.ServerVariables["UNENCODED_URL"],但在帖子中保持简短。
    猜你喜欢
    • 2014-09-24
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多