C# 非静态字段、方法或属性“HttpContext.Request”需要对象引用

SPK*_*Kan 0 c# wcf .net-core

我正在尝试创建一个通用工厂类来调用 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' 需要一个对象引用。由于我不是从静态方法或类调用,这是怎么发生的。任何帮助都会受到高度赞赏。

谢谢你。

NGa*_*bit 5

HttpContext.Request不会工作,因为它试图访问一个实例属性,就好像它是一个静态属性一样。HttpContext.Current.Request应该可以工作,假设到那时上下文已与线程相关联

HttpContext.Request 和 Request 的区别