2016-05-10 4 views
1

ASP.NET MVC 4.6.1 с помощью 5.Доступ HttpContextBase объект из статического класса

У меня есть класс со следующим конструктором и я устанавливаю переменной сессии:

public class MyClass() 
{ 
    private HttpContextBase Context { get; set; } 

    public MyClass(HttpContextBase context) 
    { 
     Context = context; 
    } 

    public bool CheckForAccess() 
    { 
     Context.Session["MyVariable"] = "Hello"; 
     return true; 
    } 
} 

я могу получить доступ сеанс и передать его моему объекту с моего контроллера следующим образом:

public ActionResult Index() 
{ 
    var myclass= new MyClass(HttpContext); 
    var excluded = myclass.CheckForAccess(); 
} 

Это прекрасно работает. Теперь у меня есть статический класс, и мне нужно, чтобы вызвать такую ​​же функцию в MyClass:

public static class MyClassExtension 
{ 
    public static bool Check() 
    { 
    //here's where i'm stuck 
    var myclass = new MyClass(I_need_to_pass_the_HttpContextBase_from_here); 
     return myclass.CheckForAccess(); 
    } 
} 

Это где я застрял. Я явно пытаюсь получить доступ к текущему сеансу зарегистрированного пользователя и передать его, когда мне нужно. Что я могу передать из своего статического класса в конструктор с параметром HttpContextBase, чтобы его можно было использовать в объекте MyClass? Благодаря

+0

Какая ошибка? – techspider

+0

Я не знаю, что отправить мой статический класс в конструктор, когда я создаю нестационарный объект. Комментарий // heres проблема в том, где im stuck – BoundForGlory

+0

Добавить контекст в качестве параметра вашей статической функции и передать это в ... –

ответ

2

Вы можете использовать HttpContext.Current, но будьте осторожны: если статический называется вне запроса ASP.NET, HttpContext.Current будет нулевым (или может быть пустым в некоторых ситуациях, в зависимости от того, как вы используете это):

public static bool Check() 
{ 
    var myclass = new MyClass(new HttpContextWrapper(HttpContext.Current)); 
    return myclass.CheckForAccess(); 
} 

HttpCOntextWrapper существует, чтобы обернуть старый герметичный класс HttpContext и поддерживать базовый класс HttpContextBase.

+0

Спасибо !!! Это сводило меня с ума. – BoundForGlory

 Смежные вопросы

  • Нет связанных вопросов^_^