niedziela, 24 października 2010

StructureMapControllerFactory w ASP.NET MVC

Standardowa implementacja fabryki kontrolerów StructureMapControllerFactory może spowodować serię wyjątków zgłaszanych podczas próby utworzenia konkretnego kontrolera dla bieżącego żądania Http. Dzieje się tak dlatego, że domyślna tablica routingu aplikacji nie wyklucza przetwarzania plików statycznych takich jak np. favicon.ico – jest on wykorzystywany w standardowym template dla aplikacji ASP.NET MVC 2. Efekt tego jest taki, że podczas implementacji aplikacji wygenerowanej z tego template otrzymujemy wyjątek:

System.ArgumentNullException was caught
  Message=Value cannot be null.
Parameter name: key
  Source=mscorlib
  ParamName=key
  StackTrace:
       at System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
       at System.Collections.Generic.Dictionary`2.ContainsKey(TKey key)
       at StructureMap.Util.Cache`2.get_Item(KEY key)
       at StructureMap.BuildSession.CreateInstance(Type pluginType)
       at StructureMap.Container.GetInstance(Type pluginType)
       at StructureMap.ObjectFactory.GetInstance(Type pluginType)
       at Komstar.Domains.Web.StructureMapControllerFactory.CreateController(RequestContext requestContext, String controllerName) in D:\…\…\Global.asax.cs:line 64
  InnerException:

Aby rozwiązać ten problem należy dodać do routingu aplikacji następujący wpis:

routes.IgnoreRoute("{favicon}", new { favicon = @"(./)?favicon.ico(/.*)?" });



Teraz powinno być cicho.


0 komentarze: