Mam problem z tym, że użytkownicy urządzeń mobilnych napotykają błąd w MVC, który nie występuje podczas przeglądania witryny na zwykłym pulpicie. Mogę konsekwentnie odtworzyć błąd za pomocą narzędzi programistycznych Chrome i stosując dowolną inną UA niż domyślną.Agent użytkownika powoduje wyświetlanie MVC ArgumentException: Niedozwolone znaki na ścieżce
Podstawowym wyjątek rzucony jest: ArgumentException: Illegal characters in path. at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional) at System.IO.Path.GetExtension(String path) at System.Web.WebPages.DefaultDisplayMode.TransformPath(String virtualPath, String suffix) at System.Web.WebPages.DefaultDisplayMode.GetDisplayInfo(HttpContextBase httpContext, String virtualPath, Func'2 virtualPathExists) at System.Web.WebPages.DisplayModeProvider.GetDisplayInfoForVirtualPath(String virtualPath, HttpContextBase httpContext, Func'2 virtualPathExists, IDisplayMode currentDisplayMode, Boolean requireConsistentDisplayMode) at System.Web.Mvc.VirtualPathProviderViewEngine.GetPathFromGeneralName(ControllerContext controllerContext, List'1 locations, String name, String controllerName, String areaName, String cacheKey, String[]& searchedLocations) at System.Web.Mvc.VirtualPathProviderViewEngine.GetPath(ControllerContext controllerContext, String[] locations, String[] areaLocations, String locationsPropertyName, String name, String controllerName, String cacheKeyPrefix, Boolean useCache, String[]& searchedLocations) at System.Web.Mvc.VirtualPathProviderViewEngine.FindPartialView(ControllerContext controllerContext, String partialViewName, Boolean useCache) at System.Web.Mvc.ViewEngineCollection.<>c__DisplayClass2.<FindPartialView>b__1(IViewEngine e) at System.Web.Mvc.ViewEngineCollection.Find(Func'2 lookup, Boolean trackSearchedPaths) at System.Web.Mvc.ViewEngineCollection.FindPartialView(ControllerContext controllerContext, String partialViewName) at System.Web.Mvc.Html.TemplateHelpers.ExecuteTemplate(HtmlHelper html, ViewDataDictionary viewData, String templateName, DataBoundControlMode mode, GetViewNamesDelegate getViewNames, GetDefaultActionsDelegate getDefaultActions) at System.Web.Mvc.Html.TemplateHelpers.TemplateHelper(HtmlHelper html, ModelMetadata metadata, String htmlFieldName, String templateName, DataBoundControlMode mode, Object additionalViewData, ExecuteTemplateDelegate executeTemplate) at System.Web.Mvc.Html.TemplateHelpers.TemplateHelper(HtmlHelper html, ModelMetadata metadata, String htmlFieldName, String templateName, DataBoundControlMode mode, Object additionalViewData) at System.Web.Mvc.Html.TemplateHelpers.TemplateFor[TContainer,TValue](HtmlHelper'1 html, Expression'1 expression, String templateName, String htmlFieldName, DataBoundControlMode mode, Object additionalViewData, TemplateHelperDelegate templateHelper) at System.Web.Mvc.Html.TemplateHelpers.TemplateFor[TContainer,TValue](HtmlHelper'1 html, Expression'1 expression, String templateName, String htmlFieldName, DataBoundControlMode mode, Object additionalViewData) at System.Web.Mvc.Html.DisplayExtensions.DisplayFor[TModel,TValue](HtmlHelper'1 html, Expression'1 expression)
Korzystanie Skrzypek, jedyną różnicą w żądaniach przy porównywaniu udanej jeden do nieudanej zamówienie jest User-Agent (a buster cache dołączany przez jQuery jako część parametry ciągu zapytania).
Dlaczego zmienia się tylko UU powodujące ten wyjątek i jak mogę uniknąć tego problemu bez pisania konkretnego zadania w systemie dla każdego miejsca, w którym jest i może wystąpić?
Czy znalazłeś rozwiązanie tego problemu? –
@RomanMik - Znalazłem tę samą pracę, co CSJ, poniżej której należy unikać bloków wydajności w moich modelach widoku. Po zmianie kodu w celu zmaterializowania listy zamiast wykorzystania wydajności problem został rozwiązany. Nadal nie do końca rozumiem, dlaczego tak się dzieje w .NET z niektórymi programami użytkownika, ale przynajmniej istnieje standardowy sposób obejścia tego. – SignalRichard
Znalazłem inne rozwiązanie związane z ASP.NET DisplayModeProvider, które udostępniłem w pokrewnym artykule SO http://stackoverflow.com/questions/33694842/illegal-characters-in-path-depending-on-user-agent/40229384#40229384 –