我正在为获取请求的URL的404页面编写一个catch-all操作方法,使用正则表达式(\w+)*
提取wordy位并将这些以空格分隔的位发送到搜索引擎以生成建议页面列表。
问题是,ServerVariables["UNENCODED_URL"]
似乎在Action方法中不可用。但是,其他服务器变量 可用。
我可以将ServerVariables["URL"]
与ServerVariables["QUERY_STRING"]
结合使用,两者都可用。但在某些情况下,这会遗漏URL中可能包含有关用户意图的有效信息的部分内容。
例如,如果格式错误的网址为
/test/007/words/something-with-a-dot.xyz/these-words-are-neglected/?stuff-in-querystring
然后将“网址”和“QUERY_STRING”设为"/test/007/words/something-with-a-dot.xyz"
和"stuff-in-querystring"
“URL”在看起来像文件扩展名之后忽略了所有内容。所以这还不够。
那么UNENCODED_URL有什么用?
我怎样才能获得它的等价物?
答案 0 :(得分:1)
您是否尝试过HTTP_URL变量?看起来它从MSDN返回原始的编码URL,例如“/vdir/default.asp?querystring”。
另外 - 如果你在控制器的动作方法中,你可以(应该?)使用HttpContext代替SERVER [someProperty]。类似的东西:
var Url = HttpContext.Request.RawUrl;
返回当前请求的完整网址。