繁体   English   中英

C#:如何从包含另一个具有多个查询参数的 url 的查询字符串中获取值?

[英]C#: How to get a value from a query string containing another url with multiple query params?

当包含查询参数的 url 包含如下查询参数的 URL 时: https://example.com/login/login.ashx?redirect_url=https://example.com?test=11&test2=22&test3=33

我怎样才能从 Url 得到https://example.com?test=11&test2=22&test3=33

我试过这个没有运气

redirectUrl = HttpUtility.ParseQueryString(HttpUtility.UrlEncode(context.Request.Url.Query)).Get("redirect_url"); .

这导致: https://example.com?test=11我想要https://example.com?test=11&test2=22&test3=33

任何包含 url 字符串分隔符的 url 参数都应该首先进行 UrlEncode。

因此,您首先需要 System.Net.WebUtility.UrlEncode(string value) 您的参数 url。

var urlEncodedParameter = System.Net.WebUtility.UrlEncode("https://example.com?test=11&test2=22&test3=33");

然后创建 url

var url = $"https://example.com/login/login.ashx?redirect_url={urlEncodedParameter}";

然后重定向到那个。 而且您不需要在 controller 上解析该参数。它将在具有这样签名的端点上工作

public IActionResult Login(string redirect_url)

首先,您需要从浏览器获取完整的 url:

string full_url = HttpContext.Request.GetDisplayUrl().ToString();

然后您需要检查完整的 url 中是否存在“redirect_url”,如果存在,您可以使用Substring(int position)方法。 但是在我们需要知道“redirect_url”的 position 之前,我们可以使用LastIndexOf()方法:

if (full_url.Contains("redirect_url"))
{
    return full_url.Substring(full_url.LastIndexOf("redirect_url"));
}

如果您的 full_url 中没有“redirect_url”,我们可以像这样简单地返回空字符串:

return string.Empty;
 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM