请问一下,我本地用Postman调试数据接口,可以获取到指定的header,但是部署到服务器IIS上面之后就获取不到Header数据,是IIS需要配置什么?还是说项目配置什么?
context.HttpContext.Request.GetHeaderValue("Cb_Agent")
这个是我获取header的代码。
服务器日志:
本地调试代码:
我这里在 IIS 中测试正常
HttpContext.Request.Headers.TryGetValue("Cb_Agent", out var agent);
我在本地测试也是正常的,上面有我本地测试代码的截图,但是我发布到服务器IIS上之后,log日志值是没有的啊。请问是我哪里配置出了问题吗??
@y_kami: GetHeaderValue
方法是如何实现的?
@dudu:
public static string GetHeaderValue(this HttpRequest request, string name) { if (request == null) throw new ArgumentNullException("request"); StringValues val = new StringValues(""); if (request.Headers != null) { request.Headers.TryGetValue(name, out val); } return val.ToString(); }
@y_kami: 本地测试时日志记录是正常的?
@dudu: 对是正常的,这个是我本地的日志
@y_kami: 但日志记录中的类不一样,一个是 WebApiAuthentication ,一个是 ApiBaseController
@dudu: 我有两个日志测试
一个是在过滤器,一个是在控制器,因为一直接收不数据,我就把过滤器的代码注释了,在控制器里面写log,看看控制器里面是否能成功,但是测试还是没有。刚刚那个日志是我本地把过滤器代码取消之后打的日志
@y_kami: 试试将请求头都写到日志看看情况
foreach(var header in HttpContext.Request.Headers)
{
_logger.LogInformation($"{header.Key}: {header.Value}");
}
@dudu:
日志里面没有我传的数据...
发现问题了,原来是我参数名称的问题,加了一个下滑线。
我改成cccAgent日志记录就出来了。
谢谢您。
@y_kami: 服务器上的IIS过滤了带下划线的请求头
是asp.net还是asp.net core?
– dudu 6年前@dudu: .net core 2.1
– y_kami 6年前