Неверный не ASCII или управляющий символ в заголовке при перенаправлении - PullRequest
0 голосов
/ 04 марта 2019

Я использую asp.net core 2.1 и у меня проблема с редиректом.Мой URL выглядит так:

HTTP://localhost:60695/ShowProduct/2/شال-آبی

последний параметр на персидском языке.и выдает ошибку ниже:

InvalidOperationException: Invalid non-ASCII or control character in header: 0x0634

, но когда я изменяю последний параметр на английском, например:

HTTP://localhost:60695/ShowProduct/2/scarf-blue

, он работает, и все в порядке.Я использую следующие коды для перенаправления:

[HttpPost]
[Route("Login")]
public IActionResult Login(LoginViewModel login, string returnUrl)
{
    if (!ModelState.IsValid)
    {
        ViewBag.ReturnUrl = returnUrl;
        return View(login);
    }        
    //SignIn Codes is hidden
    if (Url.IsLocalUrl(returnUrl) && !string.IsNullOrEmpty(returnUrl))
    {                
        return Redirect(returnUrl);
    }
    if (permissionService.CheckUserIsInRole(user.UserId, "Admin"))
    {
        return Redirect("/Admin/Dashboard");
    }
    ViewBag.IsSuccess = true;
    return View();
}

как я могу решить проблему?

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Еще один более простой вариант (работает у меня):

    var uri = new Uri(urlStr);
    return Redirect(uri.AbsoluteUri);
0 голосов
/ 04 марта 2019

Вообще говоря, это вызвано Redirect(returnUrl).Этот метод возвратит RedirectResult(url) и, наконец, установит Response.Headers["Location"] как ниже :

Response.Headers[HeaderNames.Location] = returnUrl;

Но Headers HTTP не принимаетне-ASCII символы.

Уже есть некоторые проблемы ( # 2678 , # 4919 ), предлагающие кодировать URL по умолчанию.Но такой встроенной функции пока нет.

Быстрое решение вашей проблемы:

var host= "http://localhost:60695";
var path = "/ShowProduct/2/شال-آبی";
path=String.Join(
    "/",
    path.Split("/").Select(s => System.Net.WebUtility.UrlEncode(s))
);
return Redirect(host+path);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...