zoukankan      html  css  js  c++  java
  • 关于.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;
            }
     这样就可以保证接口文件在不同项目之间拷贝时,不用改动且不会出错。
     
  • 相关阅读:
    Java Lambda表达式初探
    解开lambda最强作用的神秘面纱
    常用正则表达式
    js,java时间处理
    Java 8新特性探究(二)深入解析默认方法
    Java 8里面lambda的最佳实践
    lambda表达式和闭包
    Lambda语法篇
    lambda表达式
    依赖注入和控制反转的理解
  • 原文地址:https://www.cnblogs.com/shengwei/p/6957580.html
Copyright © 2011-2022 走看看