[英]Issue with web api
我正在使用ASP.Net Web API's。我已經在controllers文件夾中創建了一個名為api的文件夾,然后在該api文件夾中創建了一個Api控制器。 在管理控制器中,我僅放置了以下代碼即可檢查api是否正常工作。
public class AdminController : ApiController
{
DBEntities _context;
public AdminController()
{
_context = new DBEntities();
}
[HttpGet]
public IEnumerable<string> GetUsers()
{
return new string[] { "Muhammad","Ali"};
}
}
然后從瀏覽器中我調用http:// localhost:57368 / api / admin,但是它給我“找不到資源”,並帶有http 404錯誤代碼。它應該至少返回JSON結果,但給出此錯誤。 非常感謝您的幫助。 當我轉到Chrome中的“網絡”標簽時,它顯示了請求的以下詳細信息:
protected void Application_Start()
{
GlobalConfiguration.Configure(config =>
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
});
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
您的global.asax.cs應該如下所示
[RoutePrefix("api/admin")]
public class AdminController : ApiController
{
DBEntities _context;
public AdminController()
{
_context = new DBEntities();
}
[Route("GetUsers")]
[HttpGet]
public IEnumerable<string> GetUsers()
{
return new string[] { "Muhammad","Ali"};
}
}
您應該使用“ RoutePrefix”和“ Route”屬性。 API應該知道如何將傳入請求導航到操作。 此屬性可以幫助您。 不要忘記使用“ System.Web.Http”添加此命名空間。
using System.Web.Http
[RoutePrefix("api/admin")]
public class AdminController : ApiController
{
DBEntities _context;
public AdminController()
{
_context = new DBEntities();
}
[HttpGet]
[Route("GetUsers")]
public IEnumerable<string> GetUsers()
{
return new string[] { "Muhammad","Ali"};
}
}
在Global.asax中,我使用GlobalConfiguration.Configure(WebApiConfig.Register)注冊了Api,但問題是由於將MVC置於優先位置,我將其放置在底部,當我調用api / admin時,它給出了錯誤,指出沒有找到資源是因為MVC在行動。 我在頂部和Gloabl.asax的ApplicationStart()中添加了此GlobalConfiguration.Configure(WebApiConfig.Register),它運行良好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.