MVC 5属性路由的性能不佳和网站速度慢

Ker*_*ber 5 c# routes asp.net-mvc-routing attributerouting asp.net-mvc-5

我正在使用mvc5在Azure上开发一个网站.我使用属性路由,在控制器上使用路由和路由前缀.我用action.link助手打电话.我没有说出我的路线.

我在route.config上做了以下事情:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapMvcAttributeRoutes();
routes.LowercaseUrls = true;
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Run Code Online (Sandbox Code Playgroud)

我的控制器就像:

[OutputCache(Duration = 600, Location = System.Web.UI.OutputCacheLocation.Client)]
[RoutePrefix("istanbul/kadikoy")]
[Route("{action=index}")]
public class KadikoyController : Controller
{

    public ActionResult Index()
    {
        return View();
    }

    [Route("kadikoy-tarihi")]
    public ActionResult KadikoyTarihi()
Run Code Online (Sandbox Code Playgroud)

我的服务器响应时间非常差,即9.6秒

如果我注释掉属性路由代码,使用默认路由,我有2.1秒的服务器响应时间.

谢谢您的回复.

Jam*_*ite 2

事实证明,此操作真正昂贵的部分不是映射您的属性路由,而是在此之前 MVC 需要创建 ControllerFactory 并检索所有 Controller 类型。在我的项目中,该过程占用了 1245 毫秒,而 MapMvcAttributeRoutes() 函数的其余部分大约需要 45 毫秒。我的猜测是,如果您不使用属性路由,则会根据需要找到控制器,而不是一次性找到所有控制器。