我在部署的服务器上使用MVC 6 RC 1和IIS,由于某些原因,使用参数的Web方法仅在我部署的服务器上返回404。
使用带有以下网址的邮递员:
的http:// DEPLOYEDSERVERIP / API /的Util / ReleaseEquipment / 5
状态404未找到
Cache-Control →no-cache
Content-Length →0
Date →Thu, 15 Sep 2016 18:29:16 GMT
Expires →-1
Pragma →no-cache
X-Powered-By →ASP.NET
使用带有以下网址的邮递员:
状态200确定
http://localhost:3000/api/Util/ReleaseEquipment/5
connection →close
content-type →text/html; charset=utf-8
date →Thu, 15 Sep 2016 18:33:35 GMT
transfer-encoding →chunked
x-powered-by →ASP.NET
x-sourcefiles →=?UTF-8?B?QzpcQ0ZFVFNcQ0ZFVFNcc3JjXENGRVRTXHd3d3Jvb3RcYXBpXFV0aWxcUmVsZWFzZUVxdWlwbWVudFw1?=
但是,如果我使用网址运行邮递员: http://localhost:3000/api/Util/DeleteMeTest HTTP:// DEPLOYEDSERVERIP / API /的Util / DeleteMeTest
[HttpGet("DeleteMeTest")]
public String DeleteMeTest()
{
return "WORKS";
}
他们两个都很好。所以由于某种原因,服务器上需要参数的无web api方法似乎有效,我不知道为什么。任何帮助,将不胜感激。谢谢。
修改
我做了进一步的实验,发现了以下内容:
[Produces("application/json")]
[Route("api/Random")]
public class RandomController : Controller
{
private DBContext _context;
public RandomController(DBContext context)
{
_context = DBContext ;
}
[HttpGet("GetZoneID/{zonename}")]
public int GetZoneID(string zonename)
{
Zone zone = _context.Zones.Where(l => l.Name == zonename).First();
return zone.ZoneId;
}
[HttpGet("GetZoneIDTEST/{zonename}")]
public int GetZoneIDTEST(string zonename)
{
try
{
Zone zone = _context.Zones.Where(l => l.Name == zonename).First();
return zone.ZoneId;
}
catch (Exception e)
{
return -100;
}
}
使用邮递员,“http://199.131.110.4/api/Random/GetZoneIDTEST/sdgdsg”返回-100状态200 OK,但“http://199.131.110.4/api/Random/GetZoneID/sdgdsg”返回404.所以似乎未被捕获的异常也导致404错误。