我正在尝试创建一个通用工厂类来调用 WCF 并注入一些标头。在这个类中,我试图读取 HTTP 标头属性。
using System.ServiceModel;
using System.ServiceModel.Channels;
using ServiceReference;
using Microsoft.AspNetCore.Http;
namespace Service
{
public class ServiceFactory
{
public static ServiceClient Create()
{
ServiceProxy service = new ServiceProxy();
string userName = HttpContext.Request.Headers["AUTH_USERNAME"];
string authenricationType = HttpContext.Request.Headers["AUTH_TYPE"];
using (new System.ServiceModel.OperationContextScope((System.ServiceModel.IClientChannel)service.InnerChannel))
{
HttpRequestMessageProperty requestMessage = new HttpRequestMessageProperty();
requestMessage.Headers["AUTH_USERNAME"] = userName;
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = requestMessage;
requestMessage.Headers["AUTH_TYPE"] = authenricationType;
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = requestMessage;
}
return service;
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是我收到一个编译错误,因为“非静态字段、方法或属性 'HttpContext.Request' 需要一个对象引用。由于我不是从静态方法或类调用,这是怎么发生的。任何帮助都会受到高度赞赏。
谢谢你。
HttpContext.Request不会工作,因为它试图访问一个实例属性,就好像它是一个静态属性一样。HttpContext.Current.Request应该可以工作,假设到那时上下文已与线程相关联
HttpContext.Request 和 Request 的区别
| 归档时间: |
|
| 查看次数: |
2628 次 |
| 最近记录: |