当前位置:  开发笔记 > 编程语言 > 正文

将Web上下文传递给ASP MVC应用程序中的"服务"

如何解决《将Web上下文传递给ASPMVC应用程序中的"服务"》经验,为你挑选了0个好方法。

我正在尝试找到一种方法将Web当前的http上下文传递给服务类(或者通过引用它来初始化类).我这样做是为了抽象应用程序的其余部分,而不是需要了解有关http上下文的任何信息.

我也希望使用TDD测试服务,可能使用其中一个Mockable框架.因此,最好使用接口而不是实际的类.

我想要实现的一个例子:

class WebInstanceService 
{
    private IHttpContext _Context;        

    public WebInstanceService( ... , IHttpContext HttpContext )
    {
        ....
        _Context = HttpContext;
    }

    // Methods...
    public string GetInstanceVariable(string VariableName)
    {
         return _Context.Current.Session[VariableName];
    }
}

我遇到的一个主要问题是没有IHttpContext,.net http上下文是一个抽象类的子类,不能被模拟(很容易?).

另一个问题是我无法初始化类的全局实例,因为上下文与大多数请求无关.

我可以使类静态,并要求将Context传递给每个函数,因为它被称为ie

public static string GetInstanceVariable(string VariableName, HttpContext Context) 
{ ... }

但是这并没有使类更容易测试,我仍然需要创建一个HttpContext,另外任何想要使用这个类的非Web感知服务突然需要能够检索上下文,要求它们紧密耦合到Web服务器 - 首先想要创建这个类的全部原因.

我对所有建议持开放态度 - 特别是那些人们知道的便于进行tdd测试的建议.人们会怎么建议我解决这个问题?

干杯

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有