دسته بندی ها
22:57 1398/08/04

رفع خطای Invalid non-ASCII or control character in header: 0x0634 در Asp.net core

مشخصات سوال کننده :
کاربر : fateme     امتیاز کاربر : 1635     رتبه کاربر : 2
دسته بندی : Asp.net Core

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 3819
هوش مصنوعی

پاسخ هوش مصنوعی

برای رفع خطای Invalid non-ASCII or control character in header که در هنگام استفاده از URL های حاوی حروف فارسی دریافت می کنید، می توانید از روش های زیر استفاده کنید:

1. **استفاده از URL Encoding**:

قبل از ارسال URL به متد Redirect، شما باید آن را URL Encode کنید. این کار باعث می شود تا تمام کاراکترهای غیر ASCII به فرمت قابل قبول تبدیل شوند.

if (Url.IsLocalUrl(returnUrl) && !string.IsNullOrEmpty(returnUrl))
{
    return Redirect(Uri.EscapeDataString(returnUrl));
}

2. **استفاده از RedirectToAction به جای Redirect**:

اگر می خواهید کنترل بیشتری روی ریدایرکت داشته باشید، می توانید از RedirectToAction استفاده کنید که ممکن است در برخی موارد بهتر عمل کند.

return RedirectToAction("ActionName", new { id = 2, name = "موبایل" });

با استفاده از یکی از روش های بالا، می توانید از بروز خطا در هنگام ریدایرکت به URLهای حاوی حروف فارسی جلوگیری کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : saedbfd 03:10 1398/08/05

این خطا بخاطر دستور Redirect(URL) هست. البته احتمالا شما از هاست Kestrel دارید استفاده می کنید چون توی هاست IIS این مشکل معمولا پیش نمیاد.

اما برای رفع این خطا شما می تونید از دستورات زیر به جای دستورات خودتون استفاده کنید

 

var host= "http://localhost:60695";
var path = "/Product/2/موبایل";
path=String.Join(
    "/",
    path.Split("/").Select(s => System.Net.WebUtility.UrlEncode(s))
);
return Redirect(host+path);

دلیل اصلی این خطا این هست که پروتکل Http کاراکترهای غیر اسکی رو قبول نمیکنه. برای راهنمایی بیشتر در این مورد می تونید به این لینک هم مراجعه بفرمایید.

به این پاسخ امتیاز بدهید    0
امتیاز: 1664 رتبه: 1
پاسخ دهنده : fateme 13:13 1398/08/05

ممنون از شما saedbfd

درست شد 🌝

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود