2013-02-14 12 views
8

ASP.NET MVC 4. NET 4 web uygulamasına ELMAH ekledim.ELMAH ekledikten ve elmah.mvc.route değiştirdikten sonra eski rota hala kullanılabilir

Geçiş basitti ve iyi çalışıyor.

Bir "Yönetici/SiteLog" rotasına benim web.config uygulama ayarlarından "elmah.mvc.route" değerini değiştirdik - ELMAH günlük Bu güzergah şimdi

Ama görüntülenir, bir sebepten dolayı hala "/ elmah" de gösterilmektedir (css stiliyle değil, aynı içerikle).

Varsayılan elmah yolunu nasıl iptal edebilirim?

entegrasyon

cevap

9

arasında httpHandlers bölümünde yolunu güncelleyerek konum belirtebilirsiniz bir tane var) hala Elmah.Mvc.ElmahController ile eşleşecek.

routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional }); 

Güzergâhın "{controller}" kısmı, ister istemez veya yapmasın, eşleşen bir denetleyici bulacaktır. Bu, bu durumda açıkça sorunludur.

Rotanızdaki kısıtlamaları IRouteConstraint, anahatlı here kullanarak ekleyebilirsiniz. NotEqual kısıtlaması aslında oldukça yararlıdır. Daha sonra aşağıdakileri kullanarak ElmahController'ı varsayılan yoldan hariç tutunuz.

routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
     new { controller = new NotEqual("Elmah") }); 

Bu "/ ELMAH" isteklerini yapacak Sadece bu sorun kendimi ve en son sürümü çalıştığımız 404.

-1

paketlemek Nuget Elmah.MVC kullanılarak yapıldığı Sen web.config varsayılan rota (seni varsayarak Bunun nedeni

<httpHandlers> 
     <add verb="POST,GET,HEAD" path="admin/elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/> 
    </httpHandlers> 
+2

, ancak bu yardım etmedi, niether RegisterRoutes yönteminde bir IgnoreRoute ekleyerek web.config dosyası –

+0

deneyin içinde "elmah.axd" diyor tüm yerleri değişen etmedi. Bu şekilde MVC, şu istekleri yerine getirmeye çalışmaz: rotalar.IgnoreRoute ("admin/Elmah.axd"); yolları.IgnoreRoute ("admin/Elmah.axd/{* pathInfo}"); yolları.IgnoreRoute ("{resource} .axd/{* pathInfo}"); –

+0

Bu yama işe yarayacak, ancak bir yama istemiyorum, varsayılan rotayı nerede kaydettiğini ve web.config dosyasındaki değişiklikten sonra neden orada olduğunu anlayacağım. –

14

güzel yeterince çalışır uygulama ayarlarında bir çift var gibi görünüyor dönmek bunun için.

<add key="elmah.mvc.IgnoreDefaultRoute" value="true" /> 
<add key="elmah.mvc.route" value="admin/elmah" /> 

Ayrıca, muhtemelen diğerlerinden haberdar olmak da önemlidir, bu nedenle varsayılan yüklemeden sonra bir göz atın.

<add key="elmah.mvc.disableHandler" value="false" /> 
<add key="elmah.mvc.disableHandleErrorFilter" value="false" /> 
<add key="elmah.mvc.requiresAuthentication" value="false" /> 
<add key="elmah.mvc.allowedRoles" value="*" /> 
<add key="elmah.mvc.allowedUsers" value="*" /> 
Üzgünüz
İlgili konular