c# - 当从一个控制器调用一个方法到另一个控制器会话变为空
问题描述
当从控制器调用方法到另一个控制器时,会话变为空
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());
}
上面的行显示空错误
解决方案
会话由 aspnet 的请求管道填充。因为您手动调用控制器,这是您应该始终避免的事情,因为控制器用于处理请求而不是手动调用,因为这会破坏整个请求管道。
由于会话设置在请求管道上的某处,并且您手动调用控制器,因此该控制器内没有这些变量可用,但它们将位于您从中调用它的控制器上,因为这是请求管道的一部分. 也许您可以从中访问它并将其作为参数传递。
最好的选择是使用服务来进行支付或支付操作中的任何内容,并在两个控制器中使用该服务。
推荐阅读
- javascript - 如何在 MarkerClusterGroup 中设置每个集群的选项
- r - 如何在R中某些定界符位置之前和之后删除字符串?
- swift - How to correctly render points in SceneKit with colours including alpha values?
- python - How to get max values with groupby of entire dataframe in Pandas, not each row
- c# - ContentDialog on correct UWP AppWindow
- linux - Testing Linux Kernel for an embedded device with diferent Debug options
- python - Sprite disappears after holding SPACE or DOWN when using scrolling background
- angular - 我如何通过 app-root 呈现整个 html?
- excel - Excel VBA 比较两个数组并创建结果数组
- corda - Corda 显式合约升级 NoSuchElementException: List is empty