MVC.Net:WebAPI添加对jsonP的支持

在某些情况下,我们需要在WebAPI项目中添加对jsonP的支持。比如我们同时创建了MVC.Net和WebAPI两个项目,这两个项目使用不同的端口,这时如果MVC.Net项目的前端想要直接访问WebAPI项目,就会出现“cross-origin”的错误。要解决这个问题,我们通常会使用jsonP的方法。

要让WebAPI支持返回jsonP格式,需要的步骤如下:

1. 通过NuGet安装WebApiContrib.Formatting.Jsonp。项目地址:https://github.com/WebApiContrib/WebApiContrib.Formatting.Jsonp

2. 然后在修改Global.asax.cs文件,代码如下:


 1 public class WebApiApplication : System.Web.HttpApplication
2 {
3 protected void Application_Start()
4 {
5 AreaRegistration.RegisterAllAreas();
6
7 // 添加对jsonP格式的支持
8 GlobalConfiguration.Configuration.AddJsonpFormatter();
9
10 GlobalConfiguration.Configure(WebApiConfig.Register);
11 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
12 RouteConfig.RegisterRoutes(RouteTable.Routes);
13 BundleConfig.RegisterBundles(BundleTable.Bundles);
14 }
15 }

3. 最后就是记得修改Action,将需要支持jsonP的方法都加上callback参数,例如

public IEnumerable<PostViewModel> NextPage(int id, string callback = "")

这样WebAPI就支持jsonP格式的调用了。

MVC.Net:WebAPI添加对jsonP的支持,布布扣,bubuko.com

时间: 2024-08-07 21:17:51

MVC.Net:WebAPI添加对jsonP的支持的相关文章

给Asp.Net MVC及WebApi添加路由优先级

一.为什么需要路由优先级 大家都知道我们在Asp.Net MVC项目或WebApi项目中注册路由是没有优先级的,当项目比较大.或有多个区域.或多个Web项目.或采用插件式框架开发时,我们的路由注册很可能不是写在一个文件中的,而是分散在很多不同项目的文件中,这样一来,路由的优先级的问题就突显出来了. 比如: App_Start/RouteConfig.cs中 routes.MapRoute( name: "Default", url: "{controller}/{action

Asp.Net WebAPI添加OData功能后,支持查询,排序,过滤。

给Asp.Net WebAPI添加OData功能后,就能支持在url中直接输入排序,过滤条件了. 一.修改WebAPIConfig.cs: using System; using System.Collections.Generic; using System.Linq; using System.Web.Http; using System.Net.Http.Formatting; using System.Net.Configuration; namespace ProjectManagem

关于AJAX跨域调用ASP.NET MVC或者WebAPI服务的问题及解决方案

原文:http://www.cnblogs.com/chenxizhang/p/3821703.html 问题描述 当跨域(cross domain)调用ASP.NET MVC或者ASP.NET Web API编写的服务时,会发生无法访问的情况. 重现方式 1.使用模板创建一个最简单的ASP.NET Web API项目,调试起来确认能正常工作 public class TestController : ApiController { // GET api/test public IEnumera

跨域调用(mvc、webapi)

JavaScript出于安全方面的考虑,不允许跨域调用其他页面的对象.通常来说,跨域分为以下几类: 先创建两个项目,一个mvc,一个webapi,演示由mvc调用webapi mvc前端: 会出现问题 然后新建一个类在webapi根目录下,这个类创建特性[CrossSite],放在需要跨域的方法前,方法就可跨域 using System.Web; using System.Web.Http.Filters; using System.Web.Mvc; namespace APIApplicati

MVC4 WebApi开发中如果想支持Session请做好如下几个方面的问题

1.在WebApiConfig中建立建立HttpControllerHandler和HttpControllerRouteHandler 并覆写它 public class SessionRouteHandler : HttpControllerHandler,IRequiresSessionState { public SessionRouteHandler(RouteData routeData) : base(routeData) { } } public class SessionCon

MVC和WebApi的区别:

1.mvc 和WebApi: 区别: a.MVC是建立网站的一种框架,倾向于返回用户的页面请求:webApi倾向于返回用户数据请求 b.mvc直接继承system.mvc.controller:webapi继承的是system.web.http.ApiController c.mvc只能部署在iis上:webapi可以寄宿在不同的宿主上,如:Web Host.Self Host方式 d.接收参数方式不一样, e.mvc可以返回JsonResult,前端可以直接用:webapi要返回json数据,

如何解决Asp.Net MVC和WebAPI的Controller名称不能相同的问题

原文:如何解决Asp.Net MVC和WebAPI的Controller名称不能相同的问题 1.问题描述 假如有一个文章的业务(Article),我们在 Controllers文件夹中创建MVC Controller和Api Controller,各个Controller中都有相同的获取文章内容的Action(Content).路由为默认设置 MVC的路由为 {controller}/{action}/{id} Api的路由为 api/{controller}/{action}/{id} 然而我

第12章 添加对外部认证的支持

注意 对于任何先决条件(例如模板),首先要查看概述. 接下来,我们将添加对外部认证的支持.这非常简单,因为您真正需要的是ASP.NET Core兼容的身份验证处理程序. ASP.NET Core本身支持Google,Facebook,Twitter,Microsoft Account和OpenID Connect.此外,你可以找到很多其他的认证供应商实现在这里. 12.1 添加Google支持 要使用Google进行身份验证,首先需要向他们注册.这是在他们的开发者控制台完成的.通过将/signi

控制台应用程序中添加对MFC的支持

在windows控制台应用程序中,肯能会想使用一些MFC中的类,如CStringArray等,通过下面两步简单的设置可以添加对MFC的支持: 1.右击工程名 -> References 选择 All Configuration ->Configuration Properties ->General->Use of MFC ->Use MFC in a Shared DLL 2.在stdafx.h头文件中添加一下内容: #define _ATL_CSTRING_EXPLICI