webapi 设置调试config_route.config webapi.config - CSDN
精华内容
参与话题
  • 最近在写个webapi 的接口服务,正常后端请求没什么问题。 但想对方可以直接用ajax 进行调用,那么接口就得支持跨域访问才行。 网上找了一下,发现通常有两种方式。 1.在webapi路由里面配置,EnableCorsAttribute ...

    最近在写个webapi 的接口服务,正常后端请求没什么问题。

    但想对方可以直接用ajax 进行调用,那么接口就得支持跨域访问才行。

    网上找了一下,发现通常有两种方式。

    1.在webapi路由里面配置,EnableCorsAttribute 属性进行配置。

    2.在web.config 里面配置。

     

    在webapi 的apicontroller 里面增加函数:

     public class SearchApiController : ApiController
        {//
            IDALPage dalpage;
    
            public SearchApiController()
            {
                dalpage = new DALPage();
            }
            //ajax 跨域访问必须函数
            public string Options()
            {
              
                return null; // HTTP 200 response with empty body
            }
    ........
    }

    直接返回null。

    1. webapi 路由中配置,需要引用 Microsoft.AspNet.Cors,通过NuGet 进行获取。
    2. 引用Microsoft.AspNet.Cors 完成之后,
    3. 修改webapi 路由代码:
      public static class WebApiConfig
          {
              public static void Register(HttpConfiguration config)
              {
                  //跨域配置
                    config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
                 
      
                  // Web API 路由
                  config.MapHttpAttributeRoutes();
      
                  config.Routes.MapHttpRoute(
                     name: "DefaultApi",
                     routeTemplate: "api/{controller}/{action}/{id}",
                      defaults: new { id = RouteParameter.Optional }
                 );
      
      
              }
          }

      new EnableCorsAttribute("*", "*", "*") 可以根据需要改成web.config 里面配置的值。

       public static void Register(HttpConfiguration config)
              {
                  //跨域配置
                  //  config.EnableCors(new EnableCorsAttribute("*", "*", "*"));
                  //跨域配置
                  
                  
                      var allowedMethods = ConfigurationManager.AppSettings["cors:allowedMethods"];
                      var allowedOrigin = ConfigurationManager.AppSettings["cors:allowedOrigin"];
                      var allowedHeaders = ConfigurationManager.AppSettings["cors:allowedHeaders"];
                      var geduCors = new EnableCorsAttribute(allowedOrigin, allowedHeaders, allowedMethods)
                      {
                          SupportsCredentials = true
                      };
      
                      config.EnableCors(geduCors);
                   
                  // Web API 路由
                  config.MapHttpAttributeRoutes();
      
                  config.Routes.MapHttpRoute(
                     name: "DefaultApi",
                     routeTemplate: "api/{controller}/{action}/{id}",
                      defaults: new { id = RouteParameter.Optional }
                 );
      
      
              }

    4. 修改Global Application_Start 中的注册webapi 路由的代码:
     protected void Application_Start()
            {
              
    
                AreaRegistration.RegisterAllAreas();
      // WebApiConfig.Register(GlobalConfiguration.Configuration);//原代码
                GlobalConfiguration.Configure(WebApiConfig.Register);//修改后。
             
                FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
                RouteConfig.RegisterRoutes(RouteTable.Routes);
                BundleConfig.RegisterBundles(BundleTable.Bundles);
            }

    以上配置及代码在调试中使用没有问题,可以实现ajax 跨域请求。即 使用vs自带的IIS Express 运行。但发布到IIS 正式环境上后,发现ajax 跨域请求不成功。

    2. 部署到IIS 正式环境的配置, 直接在web.config 中配置跨域请求参数

    注意:需要屏蔽webapi 路由配置的代码。// config.EnableCors(....)

     在web.config 的<system.webServer>节点里面增加一下配置:

     <httpProtocol>
          <customHeaders>
            <add name="Access-Control-Allow-Origin" value="*" />
            <add name="Access-Control-Allow-Headers" value="Content-Type,X-Requested-With" />
            <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
          </customHeaders>
        </httpProtocol>

    上述为个人遇到的情况及解决方式。如果您有更好的方式,欢迎留言,大家一起探讨一下。

    展开全文
  • 搭建简单的Web API项目、Web API的调用方式

    一、创建Web API

    1、Create a New Web API Project
    创建新的Web API项目

    Start by running Visual Studio 2010 and select New Project from the Start page. Or, from the File menu, select New and then Project.
    启动VS 2012,并在“开始页”选择“新项目”。或从“文件”菜单选择“新建”,然后选择“项目”。

    在“模板”面板中选择“已安装模板”,并展开“Visual C#”节点。选择该节点下的“Web”。在项目模板列表中选择“ASP.NET MVC 4 Web应用程序”。

    WebAPI2-1

    在“新的ASP.NET MVC 4项目”对话框中选择“Web API”

    WebAPI2-2

    二、Web API路由与动作

    1、路由设置

        找到App_Start文件夹下WebApiConfig.cs文件,修改为下面设置

    public static void Register(HttpConfiguration config)
            {
                config.Routes.MapHttpRoute(
                    name: "PayOrderSendWifi", //此名称可随意设置,没用到
                    routeTemplate: "api/{controller}/{id}",
    
                  defaults: new
                  {
                      id = RouteParameter.Optional,
                  }
                );
                //直接xml文件排除
                config.Formatters.Remove(config.Formatters.XmlFormatter);
    
    
            }

    三、创建Web API方法

    1、新建一个控制器,添加一个POST请求方法

    [HttpPost]
            public ResponseSignDTO UpdateUseTimeBySign(RequestWiFiDTO reqDTO)
            {
                ResponseSignDTO dto = new ResponseSignDTO();
                
                    try
                    {
                       //要执行的方法..................
                    }
                    catch (Exception ex)
                    {
                    }
               
                return dto;
            }

    1、添加返回(响应)类

     /// <summary>
        /// 响应类
        /// </summary>
        public class ResponseSignDTO
        {
            /// <summary>
            /// 错误消息
            /// </summary>
            public ErrorMessage ErrorMessage { get; set; }
    
        }

    2、添加请求类

     public class RequestWiFiDTO
        {
      /// <summary>
            /// 用户编号
            /// </summary>
            public int UserID { get; set; }
     }

    3、消息类

     /// <summary>
        /// 消息类
        /// </summary>
        public class ErrorMessage
        {
        
            public int ID { get; set; }
     
            public string Message { get; set; }
            public static ErrorMessage Succeed()
            {
                ErrorMessage dto = new ErrorMessage();
                dto.ID = 0;
                dto.Message = "成功";
                return dto;
            }
            public static ErrorMessage Error(string errorMessage)
            {
                ErrorMessage dto = new ErrorMessage();
                dto.ID = 1;
                dto.Message = errorMessage;
                return dto;
            }
    }
     /// <summary>
        /// 响应类
        /// </summary>
        public class ResponseDTO
        {
            /// <summary>
            /// 错误消息
            /// </summary>
            public ErrorMessage ErrorMessage { get; set; }
        }
    

    2、添加一个Get请求方法

     [HttpGet]
            public ResponseDTO PayOrderSendWifiDTO(int UserID,int Days)
            {
                ResponseDTO respDTO = new ResponseDTO();
                    try
                    {
               //要执行的方法..................
                    }
                    catch (Exception ex)
                    {
                    }
               
                return respDTO;
            }
    


    四、调用方式

    1、调用POST方法:使用Chrome流量器的PostMan工具。

    前端模拟发送数据/调试的好工具:Chrome下的Postman-REST Client

    下载地址 https://chrome.google.com/webstore/search/postman-REST%20Client


    PostMan设置:

    ①、Headers

    Content-Type   application/json

    Accept              textml,application/xml,application/xhtml+xml,textml;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5



    2、调用Get方法:

    http://localhost:3553/PayOrderSendWifi?UserID=8&Days=5

    展开全文
  • webapi 关于设置路径的问题,映射

    千次阅读 2017-05-08 14:33:51
    设置很简单,只需要在WebApiConfig.cs中加入如下映射表,在原始表之前 config.Routes.MapHttpRoute( name: "DefaultApi2", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { i

    设置很简单,只需要在WebApiConfig.cs中加入如下映射表,在原始表之前

        config.Routes.MapHttpRoute(
                 name: "DefaultApi2",
                 routeTemplate: "api/{controller}/{action}/{id}",
                 defaults: new { id = RouteParameter.Optional }
             );
                config.Routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "api/{controller}/{id}",
                    defaults: new { id = RouteParameter.Optional }
                );

    就可以在values控制器中加入方法了,

    路径就是

    http://localhost:808/api/values/getmyvalues


    设置seesion启用 ,在global.asaxcs中

     public class MvcApplication : System.Web.HttpApplication
        {
    
            public override void Init()
            {
                //注册事件
                this.AuthenticateRequest += WebApiApplication_AuthenticateRequest;
                base.Init();
            }
            void WebApiApplication_AuthenticateRequest(object sender, EventArgs e)
            {
                //启用 webapi 支持session 会话
                HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required);
            }


    展开全文
  • WebApi自宿主应用

    千次阅读 2013-12-02 09:45:59
    WebApi 自宿主一例,关于Web Api的基础入门和相关概念可以参考 官方入门教程 CodeProject入门例子   1. 简介  WebAPI 托管有两种方式一种是通过IIS,一种就是通过寄宿在其他程序,例如window服务,...

    WebApi 自宿主一例,关于Web Api的基础入门和相关概念可以参考

    官方入门教程

    CodeProject入门例子

     

    1. 简介

      WebAPI 托管有两种方式一种是通过IIS,一种就是通过寄宿在其他程序,例如window服务,window应用程序等等,前者主要用于发布和最后调试使用,后者一般多在开发测试环节。

      我们知道WCF服务可以通过System.ServiceModel.ServiceHost来加载和打开服务,那么web api可以通过System.Web.Http.SelfHost.HttpSelfHostServer来加载打开API服务

      在使用System.Web.Http.SelfHost.HttpSelfHostServer来打开服务的时候,需要通过HttpSelfHostConfiguration来配置下主机一些参数(主要是服务地址)

    2.实例

     1) 通过VS2012新建一个window form工程,然后通过Nuget获取WebAPI SeltHost库,下载安装后的包:

       

        引用命名空间:

    using System.Web.Http;
    using System.Web.Http.SelfHost;  

      声明变量:主机服务和配置实例对象 

     

    private HttpSelfHostConfiguration _config = null;
    private HttpSelfHostServer _serverhost = null;

    初始化:

     

    _config = new HttpSelfHostConfiguration("http://localhost:5555");

    API路由 +打开服务

    复制代码
                _config.Routes.MapHttpRoute(
                    "API Default",
                    "api/{controller}/{username}",
                    new { username = RouteParameter.Optional });
    
                //start 
                _serverhost = new HttpSelfHostServer(_config);
                _serverhost.OpenAsync().Wait();
    复制代码

    模型类:

    复制代码
        public class UserModel {
            [Required]
            [StringLength(16,MinimumLength=4)]
            public string UserName { get; set; }
    
            [Required]
            [StringLength(16,MinimumLength=4)]
            public string Password { get; set; }
    
            [Required]
            [RegularExpression(@"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")]
            public string Email { get; set; }
    
            [Required]
            [Range(18,36)]
            public int Age { get; set; }
    
        }
    复制代码

     接下来我们需要设计一个测试客户端来验证我们的API

     

    2) 新建一个window form工程,依旧是通过NuGet获取WebAPI Client库(用于桌面客户端程序请求API服务)

     声明一个HttpClient对象,并初始化API服务地址

     

    private HttpClient _httpCLient = new HttpClient();
    _httpCLient.BaseAddress =new Uri( @"http://localhost:5555");

    调用

    复制代码
            private void GetUsers() {
                HttpResponseMessage responseMsg = _httpCLient.GetAsync("api/user").Result;
                responseMsg.EnsureSuccessStatusCode();
                var users = responseMsg.Content.ReadAsAsync<IEnumerable<UserModel>>().Result;
                string msg = string.Empty;
                foreach (var o in users) {
                    msg += string.Format("Name:{0} , Email:{1} , Age:{2}", o.UserName, o.Email, o.Age);
                    msg += System.Environment.NewLine;
                }
    
                MessageBox.Show(msg);
            }
    复制代码

     

    程序运行效果图:

    点击initConfig(配置/打开服务) ---- 》 点击Get( 测api/User,获取所有用户信息)

     

    源码下载 ,工程基于VS2012,NET FROMWORK4.5

    展开全文
  • Hbuilder+vs2017 web api开发app

    千次阅读 2018-01-19 14:31:17
    1、vs2017 创建web api项目2、选择Web API; 3、创建完成项目,默认系统文件4、在Models...复制下来,改下web.config中数据链接设置 5、一切就绪,就开始写个api接口试试,在默认文件的Controllers下找到ValuesCo
  • C# MVC API 返回Json

    千次阅读 2017-03-17 13:18:14
    修改项目WebApiConfig文件 修改后文件public static void Register(HttpConfiguration config) { // Web API 配置和服务 // Web API 路由 config.MapHttpAttributeRoutes(); co
  • web.config”的访问被拒绝。”  查看web.config权限发现没有User用户,手动添加后再浏览网站时提示输入密码,始终无法正确配置。    解决方法:重新发布网站,直接发布在C盘,在IIS中主目录引用到新发
  • 宝塔代理配置(Nginx)

    万次阅读 2018-07-13 17:12:31
    1.下载宝塔,安装所需环境webserver使用nginx,php使用共生版本2.点击网站,创建网站,填写域名和对应文件夹路径,根目录为项目文件的路径;3.点击环境,nginx旁边的小文件夹打开vhost文件夹下的对应域名的config...
  • VS调试时JSON格式文件加载不了

    千次阅读 2017-08-19 09:37:54
    在使用VS2012进行调试时发现加载数据为JSON格式的都加载不了,应该是MIME类型没有正确设置的问题。 直接通过浏览器地址栏访问时会收到提示,根据提示在IIS EXPRESS的安装目录下面执行一条命令即可: appcmd set ...
  • Web API数据传输加密

    万次阅读 2015-08-18 12:03:12
    1、Web API的接口访问分类 Web API接口的访问方式,大概可以分为几类: 1)一个是使用用户令牌,通过Web API接口进行数据访问。这种方式,可以有效识别用户的身份,为用户接口返回用户相关的数据,如包括用户...
  • 本月,一款名为FastAPI的轻量级Web框架在trending榜上有名。本着踩坑的心态试用了fastapi,发现其坑并没有许多相同量级web框架(比如flask)来的多,上手极其容易。因此果断整理了一下fastapi的上手过程。 FastAPI...
  • 微信企业号 jsSDK wx.config报invalid signature错误,导致api接口无法使用 转自:http://www.cnblogs.com/kwzm/p/5557303.html 最近在做公司定制化的时候发现一个问题,使用微信的语音API的时候微信报错,...
  • Web Api 创建及其使用

    千次阅读 2019-03-11 18:43:32
    由于创建博客,我需要尝试一些新的技术,新的思路,所以我没规规矩矩的写博客,用上了诸多以前没用的东西,比如现在这个(我只是听过webapi我连webserver都只是用过两三次/手动滑稽) 昨天开始研究的,一直到现在,...
  • 随着ASP.NET Core 2.0发布之后,原先运行在Windows IIS中的ASP.NET WebApi站点,就可以跨平台运行在Linux中。我们有必要先说一下ASP.NET Core。 ASP.NET Core 是新一代的 ASP.NET,第一次出现时的代号为 ASP.NET ...
  • 创建一个寄宿于控制台程序的WebAPi

    千次阅读 2016-02-22 15:05:07
    由于项目需要创建一个寄宿于控制台程序的WebAPI,看了一通资料,终于完成了,下面记录一下过程,备忘吧。 如果需要补充asp.net webApi的基础知识请查看微软官方知识网站:...
  • 给定关键字不在字典中

    万次阅读 2009-05-09 13:45:00
    今天在做silverlight访问wcf服务时候报异常:给定关键字不在字典中经过一阵的调试,发现ServiceReferences.ClientConfig文件内容为空,继续追查到wcf工程的Web.config文件发现 basicHttpBinding" contract=...
  • WebApi发布到外网提示404问题

    千次阅读 2017-07-11 13:44:19
    今天在做微信接口的对接,需要把webApi发布到服务器,放上去的时候,提示404 找了以后,发现了这段代码,粘贴上去就可以用了在web.config添加如下节点 <system.webServer> </modu
  • 调试WebService接口的小工具-storm

    万次阅读 2017-03-03 15:03:40
    调试WebService接口的小工具-storm 记得在url后面加上 ?wsdl,就可以调试wsdl包含的接口函数了。 Storm快速上手:  添加一个WebService(如下图一所示):点击添加,输入wsdl的endpoint url,比如 - ...
  • 为了方面APP开发人员,服务端的接口都应当提供详尽的API说明。...Help Page安装步骤及扩展(以VS2015为例):右键点击WebAPI项目的引用,选择"管理NuGet程序包"在搜索框中输入 helppage进...
  • Jersey框架put请求发送JSON数据

    千次阅读 2015-06-17 11:40:14
    想用jersey框架发送post请求,body带json格式参数 ...注意事项:引用jar包一定要正确,不然调试一堆报错。 这里引用包如下: jettison-1.3.jar 这个提供JSONObject 如果用其它的可能会报各种错误。 jerse
1 2 3 4 5 ... 20
收藏数 30,495
精华内容 12,198
关键字:

webapi 设置调试config