MVC控制器和Web Api控制器之间的共享会话

时间:2014-06-20 19:07:37

标签: asp.net-mvc session asp.net-mvc-5

我有一个具有MVC控制器和WepAPI 2控制器的Web服务。

MVC控制器的工作是为部分视图呈现和返回HTML。一个不同的MVC应用程序进行该调用,然后将生成的HTML嵌入到自己的页面中。

部分视图包含一些控件,这些控件调用WebAPI控制器来临时存储数据。为此,我在Global.asax.cs

中使用此代码在WebAPI控制器中启用了会话
protected void Application_PostAuthorizeRequest() {
    HttpContext.Current.SetSessionStateBehavior(
        System.Web.SessionState.SessionStateBehavior.Required);
}

当调用应用程序调用MVC控制器时,它会将模型传递给它。此模型包含一些初始数据,部分视图上的控件需要显示这些数据。这是控件使用WebAPI控制器创建/更新/删除的相同类型的数据。我想将模型中的数据放入会话中,以便局部视图中的控件能够读取/更新/删除此数据。

我的问题是:有没有办法让MVC控制器访问WepAPI会话?或者有没有办法让WebAPI控制器使用与MVC控制器使用相同的会话?

1 个答案:

答案 0 :(得分:0)

在Global.asax中添加以下代码

{
    "name": "UserType1",
    "base": "User",
    "idInjection": false,
    "options": {
        "validateUpsert": true
    },
    "ownerRelations": true,
    "emailVerificationRequired": true,
    "hidden": ["email", "emailVerified"],
    "properties": {
        "id": {
            "type": "string",
            "required": true,
            "id": true
        },
        "firstName": {
            "type": "string",
            "required": true
        },
        "lastName": {
            "type": "string",
            "required": true
        },

    },
    "validations": [],
    "relations": {
        "accessTokens": {
            "type": "hasMany",
            "model": "CustomAccessToken",
            "polymorphic": {
                "foreignKey": "userId",
                "discriminator": "principalType"
            },
            "options": {
                "disableInclude": true
            },
            "properties": {
                "id": "myUserId"
            }
        }
    },
    "acls": [
        {
            "accessType": "*",
            "principalType": "ROLE",
            "principalId": "$everyone",
            "permission": "DENY"
        },
        {
            "principalType": "ROLE",
            "principalId": "$everyone",
            "permission": "ALLOW",
            "property": "create"
        },
        {
            "principalType": "ROLE",
            "principalId": "$everyone",
            "permission": "ALLOW",
            "property": "login"
        }
    ],
    "methods": {}
}