• 关于.NET WebAPI 常见的跨域问题 解决清单


    还没有学习WebAPI的读者,请移步http://www.cnblogs.com/landeanfen/p/5337072.html 

    前言:

    以下问题虽然解决方法虽简单,但是相信浪费了很多人很多的时间。

    如百度中“405错误怎么办”、“接口跨域问题怎么解决”、“post接收不到参数”等…

    其实这些问题都是本地调试时的问题,当挂到服务器之后屁事没有。其实本地访问接口和挂到服务器之后是不一样的。

    下面根据本人经验,顺序说明了内网调试接口时问题产生的原因和解决方法。希望对你有帮助。

     清单:

    1.在vs2013以上版本新建web项目时,会在项目类型下放出现(winfrom、api、mvc)三个选项
    2.如果你要追求完美,建webAPI只勾API一个选项,那么你想调试post的时候,就没有页面给你写ajax调试。
    3.这时,你想到在原项目新建一个MVC控制器用来调试,它就会把所有因为你之前没勾MVC选项的所有相关文件及类加载进来,而后可能会因为微软部分vs版本的BUG,导致你新建用来调试post的mvc页面无法打开。
    4.这时,你想另外新建一个网页项目单独来调post接口,会出现405跨域问题,无法调试。
    5.这时,你想到通过第三方调试工具调试,则会出现能进入post方法,但参数为空的问题(这是因为第三方工具和微软的webAPI不兼容,你换成不规范的参数写法如,string a,string b 就能获取到)
    6.所以. 最好的开发调试webAPI的方式应是,新建项目的时候,新建WebAPI(保证mvc和api都勾上),然后在这项目里 你可以让“api控制器”和“页面的控制器”同时存在。并且开启调试,随便你怎么调都不会有问题。
    7.为了追求完美,当你要发布的时候,再新建一个纯webAPI 直接把调好的接口控制器拷贝过去 发布即可。

    ps:
    所有接口方法,建议全用自定义命名方式
    例:
            [HttpPost]
            [Route("Pr/Kong/PostTest2")]
            public string PostTest2(dynamic obj)
            {
                return "调用成功,参数name:" + obj.name + "
    参数age:" + obj.age;
            }
     这样就可以保证接口文件在不同项目之间拷贝时,不用改动且不会出错。
     
  • 相关阅读:
    mysql DATE_FORMAT FROM_UNIXTIME 的区别
    thinkphp按日期(天)统计数据
    ThinkPHP5 (mySQL) 统计各个时间段内的订单量
    转:mysql按时间统计数据,没有数据的时候自动补充0
    SQL的各种连接Join详解
    查询近7天,近1个月,近3个月每天的数据量,查询近一年每个月的数据量
    MySQL 如何生成日期表
    MySQL 生成日期表
    linux达人养成计划学习笔记(一)——命令基本格式及文件处理命令
    rviz学习笔记(二)——Markers: Points and Lines (C++) 点和线
  • 原文地址:https://www.cnblogs.com/shengwei/p/6957580.html
Copyright © 2020-2023  润新知