【问题标题】:How create session in odata?如何在 odata 中创建会话?
【发布时间】:2014-05-27 09:19:52
【问题描述】:

我必须在我的 api 中使用会话密钥。会话键是字符串值。 我必须获取并返回会话密钥。 我创建 SessionActionFilter 应该添加到响应会话密钥。 但我不明白如何更改过滤器中的响应。

行动:

[SessionActionFilter]
[Queryable]
public IQueryable<Opportunity> GetOpportunity()
{
    return db.Opportunities;
}

过滤器:

public class SessionActionFilterAttribute : ActionFilterAttribute
{
        public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
        {
            //var sessionKey = "";
            //var oldObjectContent = (actionExecutedContext.ActionContext.Response.Content as ObjectContent);
            //var newContent = new ObjectContent<Opportunity>(result, oldObjectContent.Formatter);
            //actionExecutedContext.ActionContext.Response.Content = newContent;

            base.OnActionExecuted(actionExecutedContext);
        }

}

响应数据:

{   
        "odata.metadata":"http://localhost:2577/odata/$metadata#Opportunity",
        "value":[
                {
                  "Id":4,"Name":"asda"
                },{
                  "Id":7,"Name":"s"
                }   ] 
}

我需要响应数据

{   
        "odata.metadata":"http://localhost:2577/odata/$metadata#Opportunity",
        "sessionKey": "VALUE",
        "value":[
                {
                  "Id":4,"Name":"asda"
                },{
                  "Id":7,"Name":"s"
                }   ] 
}

【问题讨论】:

    标签: c# session asp.net-web-api odata


    【解决方案1】:

    您需要创建一个自定义 ODataEntityTypeSerilizer,只需按照以下示例进行操作:https://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/OData/v3/CustomODataFormatter/

    【讨论】:

      猜你喜欢
      • 2016-11-15
      • 2010-12-13
      • 2014-06-17
      • 2015-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 2021-05-24
      相关资源
      最近更新 更多