问题是这样的,在[HttpGet]标识下,我在浏览器直接输入URL或是通过后台发起HTTP请求都是可以访问到Controller中的的方法的...
因为要传的参数有点长,远超过255的长度了,所以将[HttpGet]改成[HttpPost]了,
之后通过后台程序发起HTTP请求,同样的URL,提示 404的服务器异常..
在浏览器请求如下图:
这个文件夹中的2个配置是这样的
想问一下,如果要想后台能用Post的方式请求的话,请问配置要怎么修改呢?
我没有遵守REST的风格,所以改了上图中的2个配置,能直接调用方法名称的.但是Post下就出问题了..
在这个Controller中,还有其他方法也标记为[HttpPost]了吗?
只有这一个是Post,另一个是get
@hexllo: 这两个方法的参数类型是不是一样的?
@dudu: 你这样说提醒我了,后来发现一个规律,方法里只要写了参数,都调用不了..必须是无参数..有没有办法让其有参数也能调用到?
@hexllo: 参考:http://stackoverflow.com/a/11408503
..没看出来有什么问题.你用浏览器直接访问发起的是get请求
是这个问题吗?
就是浏览器没法post,所以我建了一个程序模拟post...在这个程序中报404异常了
@hexllo: 你查下院子里webapi的例子,参数请求方法明明,都是有限制,你明显不清楚这些限制
你这个都标记为了HttpPost了,客户端就应该发Post请求, 你现在发的还是Get请求,自然报错了。
要修改的是客户端,而不是服务器端。
是的,浏览器是get.
我的意思是,我新建了一个程序,用C#代码在这个程序里发起POST请求,报404异常
@hexllo: 404异常还是一样的话,就是请求方法错了
@吴瑞祥: 发现规律了,方法里只要写了参数,都调用不了..必须是无参数..怎么解决呢?用Header来传吗?
参数的原因吧,如果参数不是复杂类型,直接在地址栏中传递。如果参数是复杂类型,就在消息头中传递。