0

我已经阅读了几篇关于如何为多租户应用程序使用子域和自定义路由的文章,但我正在处理的项目只需要一个域。我们使用默认的会员资格提供商,并将加密的租户 ID 存储在 cookie 中。

我的问题是关于控制器的。我们目前正在构建它们,以便每个操作中的第一项从 cookie 中检索 TenantID,然后将其传递给每个 Linq 查询。将它移到控制器类的顶部是否安全,因此每个控制器实例只发生一次?或者如果多个用户访问同一个控制器,这是否会导致潜在的数据交叉?

我发现这篇文章表明这​​是可能的,但我想确定一下。

例如,这是当前系统:

public class ThisController : Controller
{
    private DBContext db = new ThisContext();

    public ActionResult Index() 
    {
        long tenantid = AuthUser.GetTenantID();
...  

这是我们正在考虑的:

public class ThisController : Controller
{
    private DBContext db = new ThisContext();

    private Int64 tenantid = AuthUser.GetTenantID();

    public ActionResult Index()
    {
...

我对默认行为的理解是,每个请求都会创建一个新的控制器类实例,但我想在继续之前确保它是正确的。

4

1 回答 1

1

是的,默认情况下,确实会为对 mvc 应用程序的每个请求创建新的控制器实例。您可以通过向控制器添加构造函数并在构造函数中执行 Debug.WriteLine 来自己测试它。

于 2013-07-11T07:29:25.790 回答