首页 > 解决方案 > 当从一个控制器调用一个方法到另一个控制器会话变为空

问题描述

当从控制器调用方法到另一个控制器时,会话变为空

HRPayGenerateController pay = new HRPayGenerateController(_paygenerateService);

Guid[] tabledata = new Guid[1];
tabledata[0]= hrPayGenarate.Id;


_HRPayGenerate.Pay(tabledata);

public dynamic Pay(Guid[] TableData)
{ 
    Guid BusinessUnitId = Guid.Parse(Session["BusinessUnitId"].ToString());
}

上面的行显示空错误

标签: c#asp.net-mvc

解决方案


会话由 aspnet 的请求管道填充。因为您手动调用控制器,这是您应该始终避免的事情,因为控制器用于处理请求而不是手动调用,因为这会破坏整个请求管道。

由于会话设置在请求管道上的某处,并且您手动调用控制器,因此该控制器内没有这些变量可用,但它们将位于您从中调用它的控制器上,因为这是请求管道的一部分. 也许您可以从中访问它并将其作为参数传递。

最好的选择是使用服务来进行支付或支付操作中的任何内容,并在两个控制器中使用该服务。


推荐阅读