ASP.NET Webforms - 如何确定请求以问号结尾,即。?

ASP.NET Webforms - How to determine of a request ends in a question mark ie.?

当我在 WebForms 应用程序中输入 URL 时:

http://localhost/blog/how-are-cruise-ships-powered?

我查看了 Request.URL 我看到了以下内容:

当我在表单中有一个 URL 时

http://localhost/blog/how-are-cruise-ships-powered

我看到以下内容:

那我怎么区分他们两个呢?我需要重定向具有尾随的 URL 吗?在它上面 not 有尾随的?但我分不清哪个是哪个。非常感谢任何指点。

简短的回答是它们(在语义上)完全相同 URL。 ? 是一个特殊字符,用作 URL 的位置(地址)部分与其查询参数之间的分隔符。

后面没有参数的尾随 ? 的功能与其裸对应物应该没有什么不同,也不应该在标准服务器(包括 IIS)上需要任何特殊的 redirecting/parsing/handling。因此,您实际上不需要做任何事情。

如果您确实确实需要在 URL 请求字符串中找到 ? 字符,则必须在堆栈中执行更高一层的操作。但请注意,这会破坏普遍认可的网络语义,此时发送重定向 甚至可能导致客户端无限循环 取决于实际附加 [=10] 的人=].

我同意@lc。答案,但如果您仍然需要 inspect/fetch 它,您可以通过 Request.RawUrl.

访问它

Request.RawUrl 包含域斜杠后面的任何内容。

例如mysite.com/somepage? 会导致 /somepage?