Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法访问AsyncController构造函数中的HttpContext或Request对象_C#_Asp.net Mvc 4_Asynccontroller - Fatal编程技术网

C# 无法访问AsyncController构造函数中的HttpContext或Request对象

C# 无法访问AsyncController构造函数中的HttpContext或Request对象,c#,asp.net-mvc-4,asynccontroller,C#,Asp.net Mvc 4,Asynccontroller,我正在使用一个AsyncController说'abstractabccontoler' public class AbstractAbcContoller : AsyncController { } 然后我又有3个控制器继承了新创建的abstractabccontoler 现在,当我创建这3个控制器中任何一个的构造函数并尝试访问HttpContext/Request对象时,我总是将它们设置为null 我需要初始化接受HttpRequestBase作为其构造函数参数的服务对象 我不得不接受这种

我正在使用一个
AsyncController
说'abstractabccontoler'

public class AbstractAbcContoller : AsyncController
{
}
然后我又有3个控制器继承了新创建的
abstractabccontoler

现在,当我创建这3个控制器中任何一个的构造函数并尝试访问HttpContext/Request对象时,我总是将它们设置为null

我需要初始化接受HttpRequestBase作为其构造函数参数的服务对象

我不得不接受这种变通办法

public class AbstractAbcController : AsyncController
{
    protected IAbcService GetAbcService(AbstractAbcController controller, HttpRequestBase request)
    {
        if (controller.GetType() == typeof (AbcAddressVerificationController))
            return new AbcAddressVerificationService(request);

        if (controller.GetType() == typeof(AbcPhoneVerificationController))
            return new AbcPhoneVerificationService(request);

        throw new ArgumentException();
    }
}
然后在控制器/动作中使用如下内容

IAbcService abcService = GetAbcService(this, Request);
abcService.DoSomething();

我有点不喜欢,我不确定哪种方式更好。请注意。

请求和响应上下文是每个请求对象,每个请求上下文都有一个单独的副本,因此通过构造函数注入它们没有意义,因此应该为每个需要它们的方法传递一个参数