最近在做WEBAPI接口开发,为了图省事,所以针对Post方法定义了dynamic参数传基础类型,如下图:
[HttpPost]
public OnlineMeterReadPackage OnlineDataToReadCycle(dynamic obj)
经丝袜哥测试无问题,但是在前端人员那使用时发现报错
最后查得是跨域问题造成。
在网上找了一个网友的解决方法,现将方法内容贴来:

跨域,请求按要求配置完毕之后,options预请求老是报错。原因是webapi 默认的web.config有配置
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
有这么个配置,导致不行。要把他删掉,还要加上
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="POST,GET" />
<add name="Access-Control-Allow-Headers" value="x-requested-with,content-type,authorization,mypara,username" />
</customHeaders>
</httpProtocol>
--------------------------------------------------------
这个问题整了我好久。遇到问题关键还是要有思路。对于数据的常用的有二分法,对于配置问题,可以用对比法。
这个问题我一开始就是拼命的百度,google,发现都解决不了问题。其实看的差不多就行了,很多时候是别的问题造成的。
然后就新建一个项目,调试,竟然发现成功了,后来一对比 就是web.config配置的问题。
现在仔细想想关键的还是处理问题思路。
链接地址:http://www.cnblogs.com/shenbin/p/5680976.html
浙公网安备 33010602011771号