C# 将Web Api MapHttpRoute映射到基本Url
嗨,我有一个控制器,如下所示C# 将Web Api MapHttpRoute映射到基本Url,c#,asp.net-mvc,asp.net-mvc-4,asp.net-web-api,asp.net-mvc-routing,C#,Asp.net Mvc,Asp.net Mvc 4,Asp.net Web Api,Asp.net Mvc Routing,嗨,我有一个控制器,如下所示 [RoutePrefix("")] public class ApiInformationController : Controller { public ActionResult Index() { var info = new ApplicationInformation { ApplicationName = "Test App", DatabaseName = "
[RoutePrefix("")]
public class ApiInformationController : Controller
{
public ActionResult Index()
{
var info = new ApplicationInformation
{
ApplicationName = "Test App",
DatabaseName = "SQL Server 2012",
ApplicationVersion = "3.10.0"
};
return Json(info, JsonRequestBehavior.AllowGet);
}
}
我还在WebApiConfig中配置了路由,因为我不想单独使用RouteConfig
private static void ConfigureRoutes(HttpConfiguration config)
{
_config = config;
// Web API routes
_config.MapHttpAttributeRoutes();
_config.Routes.MapHttpRoute("Default", "{controller}/{action}/{id}",
new {controller = "ApiInformation", action = "Index", id = RouteParameter.Optional});
_config.Routes.MapHttpRoute(name: "DefaultApi", routeTemplate: "api/{controller}/{id}",
defaults: new {id = RouteParameter.Optional});
}
当我尝试访问基本url时,我希望显示API信息。
例如,当我尝试时,我希望Api调用ApiInformationController的索引。我做错了什么
当前当我调用url时,我得到以下响应,
需要修改MapHttpRoute的routeTemplate 像WebApiConfig一样
config.Routes.MapHttpRoute("Default", "{controller}/{action}/{id}",
new { controller = "ApiInformation", action = "Index", id = RouteParameter.Optional });
你是如何接受的
[System.Web.Http.HttpGet]
public IHttpActionResult Index()
{
var info = new ApplicationInformation
{
ApplicationName = "Test App",
DatabaseName = "SQL Server 2012",
ApplicationVersion = "3.10.0"
};
return Json(info);
}
希望它能帮助您修改MapHttpRoute的routeTemplate 像WebApiConfig一样
config.Routes.MapHttpRoute("Default", "{controller}/{action}/{id}",
new { controller = "ApiInformation", action = "Index", id = RouteParameter.Optional });
你是如何接受的
[System.Web.Http.HttpGet]
public IHttpActionResult Index()
{
var info = new ApplicationInformation
{
ApplicationName = "Test App",
DatabaseName = "SQL Server 2012",
ApplicationVersion = "3.10.0"
};
return Json(info);
}
希望它能帮助你没有MapHttpAttributeRoutes它能工作吗?你是将MVC项目与API一起使用还是将API项目一起使用?@Vinay-Ashiquizzman有一个观点。MVC和WebAPI是独立的框架,每个框架都有自己的路由,您需要确保它们的URL不冲突。根据问题中的MVC标记,看起来您正试图将MVC路由放在WebAPI配置中(或者,您只是将路由加倍,这不是一件好事)。MVC路由应该添加到您的RouteConfig.cs文件中,而不是这里。感谢您的帮助,您可以帮助我使用ApiController实现Web APi路由吗。这样,当单击基本url时,我会得到所需的结果。它在没有MapHttpAttribute路由的情况下工作吗?您是将MVC project与API一起使用还是将API project一起使用?@Vinay-Ashiquizzman有道理。MVC和WebAPI是独立的框架,每个框架都有自己的路由,您需要确保它们的URL不冲突。根据问题中的MVC标记,看起来您正试图将MVC路由放在WebAPI配置中(或者,您只是将路由加倍,这不是一件好事)。MVC路由应该添加到您的RouteConfig.cs文件中,而不是这里。感谢您的帮助,您可以帮助我使用ApiController实现Web APi路由吗。这样,当单击基本url时,我会得到所需的结果。这里用于查询工作正常的数据。但是,如果某个用户只是尝试像这样访问基本url,我希望显示ApiInformation。我可以使用ApiController而不是MVC控制器来实现这一点。这里用于查询工作正常的数据。但是,如果一些用户只是尝试像这样访问基本url,我希望显示ApiInformation。我可以使用ApiController而不是MVC控制器来实现这一点吗。