您好我的项目中有一个名为help的Controller,如下所示:
public class HelpController : Controller
{
// GET: Help
public string Index()
{
return "test help";
}
}
这是我的route.config文件
using System.Web.Mvc;
using System.Web.Routing;
namespace ProductsApp.App_Start
{
public class RouteConfig
{
public static void RegisterRoutes (RouteCollection routes)
{
RouteTable.Routes.RouteExistingFiles = true;
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
我的Global.asax
using ProductsApp.App_Start;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Routing;
namespace ProductsApp
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}
}
当我导航到/ Help / Index时,出现404服务器错误。如果我导航到/帮助。我的应用程序实例化Home控制器。可能有什么不对?
答案 0 :(得分:-1)
你有区域>你的网页内的HelpPage?也许这是beign而不是你的控制器。
您可以使用它们实现属性路由,您可以指定该控制器和方法的路由,而不是RouteConfig。
在我看来,这种方法使代码更易于理解和易于理解。您甚至可以使用它来制作控制器的版本。
这是如何实现属性路由的例子:
[RoutePrefix("api/v2/network/account")]
public class AccountController : ApiController
{
[Route("{login}"), HttpGet]
public Account GetAccountByLogin(string login)
{
// Code Logic Here
}
}
你怎么称呼这种方法?您不会输入 yourapi / api / Account / GetAccountByLogin / userlogin ,因为您的api或mvc不会识别该网址,而是在您输入时识别它: yourapi / api / V2 /网络/帐户/用户登陆即可。
这些墨水可以帮助您:
对于地区:
https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/areas
对于属性路由:
https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2