首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将单参数字符串视为多参数c# QueryHelpers

将单参数字符串视为多参数c# QueryHelpers
EN

Stack Overflow用户
提问于 2020-10-31 05:15:11
回答 1查看 35关注 0票数 0

以下是原始链接:

代码语言:javascript
复制
https://localhost:5001/Curriculum/Schedule/Event/EventCreate?initialDate=2020-09-04&courseId=1

下面是构建链接重定向的过程。AddQueryString是一个使用QueryHelpers的StringExtensions类。

代码语言:javascript
复制
string passportUrl = string.IsNullOrWhiteSpace(localUrl)
            ? PassportOptions.PassportUrl
            : PassportOptions.PassportUrl.AddQueryString("ReturnUrl", localUrl);

StringExtensions类:

代码语言:javascript
复制
public static class StringExtensions
{
    public static string AddQueryString(this string uri, string name, string value)
    {
        if(uri == null) throw new ArgumentNullException(nameof(uri));
        return QueryHelpers.AddQueryString(uri, name, value);
    }
}

它将重定向到:

代码语言:javascript
复制
https://loginlink/login.page?service=https://localhost:5001/account/login&ReturnUrl=%2FCurriculum%2FSchedule%2FEvent%2FEventCreate%3FinitialDate%3D2020-09-04%26courseId%3D1"

该问题发生在/account/login方法中。returnUrl变成这个字符串:

代码语言:javascript
复制
"/Curriculum/Schedule/Event/EventCreate?initialDate=2020-09-04"

我为调查和low添加了一个courseId参数到/account/login参数中,可以看到courseId参数已经设置。如何重新构造ReturnUrl,以便Login方法将其视为一个字符串参数,而不是多个参数?

编辑为回答问题-获取returnUrl字符串"/Curriculum/Schedule/Event/EventCreate?initialDate=2020-09-04".的登录方法当将int courseId添加到参数时,courseId将设置为重定向url中的任何courseId。

代码语言:javascript
复制
  public async Task<IActionResult> Login(string returnUrl)
  {
    
  }

另一件事需要注意的是: IHttpContextAccessor请求QueryString是这样的(ticketvalue是任何等于的值)。

代码语言:javascript
复制
{?ticket=ticketvalue&ReturnUrl=/Curriculum/Schedule/Event/EventCreate?initialDate=2020-09-04&courseId=1}
EN

回答 1

Stack Overflow用户

发布于 2020-10-31 07:32:03

正如@Rufus L所说,System.Web.HttpUtility.UrlEncode(localUrl)是解决这个问题的答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64615885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档