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

时间:2018-12-31 06:48:00

标签: c# asp.net-mvc

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

Q_COKE_AP_CHECKS_SIGN_STATUS_V 
cols (plan_id,COKE_SIGNATURE__A , COKE_SIGNATURE__B, COKE_AUDIT, COKE_CHQ_NUMBER, COKE_PAY_SUPPLIER)


SELECT DISTINCT
    COKE_CHQ_NUMBER,
    COKE_PAY_SUPPLIER
FROM
    apps.Q_COKE_AP_CHECKS_SIGN_STATUS_V
WHERE 
    plan_id = 40192
    AND COKE_SIGNATURE__A = 'YES'
    AND COKE_SIGNATURE__B = 'YES'
    AND COKE_AUDIT = 'YES'

MINUS 


SELECT DISTINCT
    COKE_CHQ_NUMBER,
    COKE_PAY_SUPPLIER
FROM  apps.Q_COKE_AP_CHECKS_SIGN_STATUS_V
INNER JOIN (
    SELECT COKE_CHQ_NUMBER_DELIVER
    FROM apps.Q_COKE_AP_CHECKS_DELIVERY_ST_V
) T ON T.COKE_CHQ_NUMBER_DELIVER = apps.Q_COKE_AP_CHECKS_SIGN_STATUS_V
WHERE 
    plan_id = 40192
    AND COKE_SIGNATURE__A = 'YES'
    AND COKE_SIGNATURE__B = 'YES'
    AND COKE_AUDIT = 'YES'

上一行显示空错误

1 个答案:

答案 0 :(得分:0)

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

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

最好的选择是使用一项服务来执行付款或支付操作中的所有内容,并在两个控制器中使用该服务。