Character encoding 更改响应头编码.Net核心
我需要更改.Net Core 1.1上响应头的编码的帮助 我们正在开发一个应用程序,我们创建了一个名为“X-application-Error”的自定义头,其中在应用程序后端发生的任何错误都返回一个响应代码500,并且在头中返回消息。通过这种方式,我使用“app.UseExceptionHandler”捕获错误,将其放在标题中,前端(如果接收到响应代码500)将显示在标题处发送的消息 正如预期的那样,我遇到的问题是,我需要发送诸如“é”、“ã”等字符,而头的默认编码是UTF-8,因此它不显示这些字符 在.net framework中,我们可以使用“HttpResponse.HeaderEncoding”属性来更改它() 但是我找不到与.Net内核(1.1)相同的版本Character encoding 更改响应头编码.Net核心,character-encoding,http-headers,.net-core,Character Encoding,Http Headers,.net Core,我需要更改.Net Core 1.1上响应头的编码的帮助 我们正在开发一个应用程序,我们创建了一个名为“X-application-Error”的自定义头,其中在应用程序后端发生的任何错误都返回一个响应代码500,并且在头中返回消息。通过这种方式,我使用“app.UseExceptionHandler”捕获错误,将其放在标题中,前端(如果接收到响应代码500)将显示在标题处发送的消息 正如预期的那样,我遇到的问题是,我需要发送诸如“é”、“ã”等字符,而头的默认编码是UTF-8,因此它不显示这些
我在这里发现了一个类似的问题(),但也没有答案。好的,我找到了一个解决方法(是的,现在对我来说似乎很明显) 据我所知,如果未进行编码,则.Net核心不允许在标题中包含“á”、“ã”等字符。所以我只使用了“WebUtility.UrlEncode(string)”并将消息编码发送出去。在前端,Angular自动解码了信息。代码如下:
app.UseExceptionHandler(
builder =>
{
builder.Run(
async context =>
{
//Some validations I make
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
var error = context.Features.Get<IExceptionHandlerFeature>();
if (error != null)
{
try
{
context.Response.Headers.Add("Application-Error", WebUtility.UrlEncode(error.Error.Message));
}catch(Exception e)
{
context.Response.Headers.Add("Application-Error", e.Message);
}
//the rest of the code
}
});
});
app.UseExceptionHandler(
生成器=>
{
建设者,快跑(
异步上下文=>
{
//我做了一些验证
context.Response.StatusCode=(int)HttpStatusCode.InternalServerError;
var error=context.Features.Get();
if(错误!=null)
{
尝试
{
Add(“应用程序错误”,WebUtility.UrlEncode(Error.Error.Message));
}捕获(例外e)
{
context.Response.Headers.Add(“应用程序错误”,e.Message);
}
//代码的其余部分
}
});
});
这些字符在UTF-8代码表中。