gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 23:36:20 26 4
gpt4 key购买 nike

我正在使用 AsyncController say 'AbstractAbcContoller'

public class AbstractAbcContoller : AsyncController
{
}

然后我还有 3 个继承新创建的 AbstractAbcContoller 的 Controller 。

现在,当我为这 3 个 Controller 中的任何一个创建构造函数并尝试访问 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();
}
}

然后在 Controller / Action 中使用这样的东西

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

我有点不喜欢,我不确定哪种方法更好。请指教。

最佳答案

Request 和 Response Context 是每个请求对象,每个请求上下文都有一个单独的副本,因此没有必要通过 Constructor 注入(inject)它们,因此应该为需要它们的每个方法传递一个参数

关于c# - 无法在 AsyncController 的构造函数中访问 HttpContext 或 Request 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30451949/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com