C# web api的问题
我正在使用ASP.Net web API。我在controllers文件夹中创建了一个名为API的文件夹,然后在该API文件夹中创建了一个API控制器。 在管理控制器中,我简单地放置了以下代码来检查api是否工作C# web api的问题,c#,asp.net,asp.net-web-api,C#,Asp.net,Asp.net Web Api,我正在使用ASP.Net web API。我在controllers文件夹中创建了一个名为API的文件夹,然后在该API文件夹中创建了一个API控制器。 在管理控制器中,我简单地放置了以下代码来检查api是否工作 public class AdminController : ApiController { DBEntities _context; public AdminController() { _context = new DBEntities();
public class AdminController : ApiController
{
DBEntities _context;
public AdminController()
{
_context = new DBEntities();
}
[HttpGet]
public IEnumerable<string> GetUsers()
{
return new string[] { "Muhammad","Ali"};
}
}
然后我从浏览器中调用,但它给出了无法找到资源的http 404错误代码。它应该至少返回JSON结果,但给出了此错误。
非常感谢您的帮助。
当我进入chrome的“网络”选项卡时,它会显示请求的以下详细信息:
URL:您应该使用“RoutePrefix”和“Route”属性。API应该知道如何将传入的请求导航到操作。这些属性可以帮助您。不要忘记添加这个名称空间“usingsystem.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.ConfigureWebApiConfig.Register注册了Api 但问题是我把它放在底部,因为MVC优先,当我调用api/admin时,它给出了一个错误,说找不到资源,因为MVC正在运行。 我在顶部和Gloabl.asax中的ApplicationStart中添加了这个GlobalConfiguration.ConfigureWebApiConfig.Register,效果很好
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应该是这样的它仍然不工作,先生。我已经在MVC模板中创建了该项目,但是通过从nuget package manager下载在引用中添加了web api,并且也在Global.asaxh中注册了。您如何知道属性路由已启用,或者希望使用它?为什么你只是提供一个没有解释的代码转储答案?它仍然不起作用,先生。我已经在MVC模板中创建了该项目,但通过从nuget package manager下载,在参考中添加了web api,并且已经在Global中注册。asax@Muhammad阿里:你要改变路线图课程吗?先生,我刚想出来,并回答了我自己的问题,请复习一下。你为什么把这个贴上剃须刀的标签?
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);
}