0

我正在为 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 是怎么回事?
我怎样才能得到它的等价物?

4

1 回答 1

1

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

资源

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

var Url = HttpContext.Request.RawUrl;

它返回当前请求的完整 URL。

于 2011-10-14T13:15:45.197 回答