如何在Web API操作中有选择地启用JSONP?

时间:2014-07-28 20:44:58

标签: asp.net-web-api asp.net-web-api2 action-filter custom-action-filter web-api-contrib

我使用ASP.NET Web API v2.0构建了一个web api。

我需要在CORS / JSONP中提供一些控制器/操作,所以我选择使用WebApiContrib.Formatting.Jsonp。

因为我还没有使用Web API v2.1,所以我只能使用WebApiContrib v0.9.7.0。

如果我在Global.ascx.cs中添加JSONP格式化程序,它将打开我的所有控制器和CORS / JSONP操作,因此我在下面编写了Action Filter以在特定时间添加和删除格式化程序。 / p>

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class EnableCorsAttribute : System.Web.Http.Filters.ActionFilterAttribute
{
    public override void OnActionExecuting(System.Web.Http.Controllers.HttpActionContext actionContext)
    {
        var config = System.Web.Http.GlobalConfiguration.Configuration;
        config.Formatters.Insert(0, new WebApiContrib.Formatting.Jsonp.JsonpMediaTypeFormatter(config.Formatters.JsonFormatter));
    }

    public override void OnActionExecuted(System.Web.Http.Filters.HttpActionExecutedContext actionExecutedContext)
    {
        var config = System.Web.Http.GlobalConfiguration.Configuration;
        config.Formatters.RemoveAt(0);
    }
}

现在,我的问题是,如果有多个请求进入,该代码是否会是线程安全的?

0 个答案:

没有答案