5

我正在開發一個關於Azure的網站,與mvc5。我使用屬性路由,在控制器上使用路由和路由前綴。我打電話與action.link助手。我沒有命名我的路線。糟糕的性能和緩慢的網站與MVC 5屬性路由

我做了以下我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 } 
); 

我的控制器是這樣的:

[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() 

我的表現非常非常差的服務器響應時間,即9.6s

如果我註釋掉屬性路由代碼,使用默認路由,我有2.1秒的服務器響應時間。

謝謝你的回覆。

+2

只有在向IIS發出第一次請求時纔會出現糟糕的性能嗎?這可能是由IIS創建初始工作進程造成的。 – alex 2015-06-10 14:50:41

+0

我看到相同的東西,特別是那個調用來映射歸因路線。我懷疑這是因爲它正在掃描更多的程序集而不是查找所有屬性,或者只是反射必然比編程式路由定義慢。 – 2017-11-18 17:11:18

回答

0

事實證明,這個操作的真貴位不被映射你的歸因路線,那就是在這之前可能發生MVC需要創建的ControllerFactory和檢索所有的控制器類型。該過程在我的項目中佔用1245毫秒,而MapMvcAttributeRoutes()函數的其餘部分大約需要45毫秒。我的猜測是,如果你不使用屬性路由,控制器可以根據需要而不是一次全部找到。