C# WebApi/Owin 404及Post取不到参数解决方案

目录

1.WebApi 404原因和解决方案

2.POST取不到参数原因和解决方案:

 解决方案完整代码


吐血原创,转载请注明出处!

1.WebApi 404原因和解决方案

关于404,第一个可能出现该问题的原因就是,这个APIController类没有public声明

第二个,如果routeTemplate: "api/{controller}/{action}/{id}",那么你的请求地址应该是

http://localhost:9000/api/log/Get

这里的{action},指的是同一个ApiController可以有多个Get Post方法.

第三个,如果你使用的是别的网络来访问这个接口,那么localhost应该改成本机的IP,获取本机IP的代码如下:

//获取本机IP
string IP = "";
IPHostEntry here = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress _ip in here.AddressList) {
    if (_ip.AddressFamily.ToString().ToUpper() == "INTERNETWORK") {
        IP  = _ip.ToString();
        break;
    }
}

//本地Http服务器
string baseAddress = "http://"+ IP  +":9000";
disposeable = WebApp.Start<Startup>(url: baseAddress);

第四个404的可能原因就是,你Get或Post请求,参数未上传或者上传方式错误也会导致404,未上传导致的404这个问题略过,关于服务器为何收不到参数导致404请继续往下看. 


2.POST取不到参数原因和解决方案:

如上图中的代码,Get方法中是可以直接取msg参数值的,但是Post死活取不到,不管参数前加了[FromBody]还是[FromUri]又或者声明[HttpPost]都取不到,见鬼了,后来在某个群里问起这个问题,有个仁兄说他都是建模取的,然后我就瞎猫碰死耗子,建了个对象来套,就跟Dao层使用一个对象来接收参数一样,如下图

测试:

Post方法中我返回的是字符串,并且MediaTypeHeaderValue也设置了"text/html",为何这里返回的字符串会带有双引号?

解决方案,将return ""改成如下


 解决方案完整代码

吐血原创,转载请注明出处!

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值