2015-11-13 46 views
5

我有兩個相同的調用ASP.NET,唯一的區別是用戶代理。我用小提琴來重現這個問題。路徑中的非法字符取決於User-Agent?

HTTP請求行是:

PUT http://localhost/API/es/us/havana/club/tickets/JiWOUUMxukGVWwVXQnjgfw%7C%7C214 HTTP/1.1 

與Works:

User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4 

其他的都是100%相同:

User-Agent: Mozilla/5.0 (Linux; Android 4.3; Nexus 10 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2307.2 Safari/537.36 

與失敗。

+0

它是如何失敗?什麼是返回的狀態碼?服務器端的任何錯誤跟蹤? – fiddler

+0

'/ Api'應用程序中的服務器錯誤。 路徑中的非法字符。 System.Web.WebPages.DefaultDisplayMode.TransformPath(String path,Boolean checkAdditional)+13766780 System.IO.Path.GetExtension(String path)+28 System.Web.WebPages.DefaultDisplayMode.TransformPath(String path,串virtualPath,串後綴)49 System.Web.WebPages.DefaultDisplayMode.GetDisplayInfo(HttpContextBase HttpContext的,串virtualPath,Func'2 virtualPathExists)33 System.Web.WebPages.DisplayModeProvider.GetDisplayInfoForVirtualPath(字符串virtualPath,HttpContextBase,.. – user2105237

+0

讓我澄清這個問題似乎與Fiddler無關,我只是用小提琴來追蹤這些電話, – user2105237

回答

3

就我而言,根本原因是MVC的MultipleViews和DisplayMode提供程序。這允許MVC應用程序神奇地拾取設備特定的視圖;例如 custom.cshtml customer.mobile.cshtml

這篇文章有的功能一個很好的解釋,以及詳細介紹瞭如何將其關閉: https://msdn.microsoft.com/en-us/magazine/dn342866.aspx

我加入Microsoft.AspNet.WebPages包修復此我的項目和我的啓動加入到這個代碼的調用(的Application_Start在Global.asax中或者如果使用OWIN,decordated W/OwinStartup屬性的方法):

public static void RegisterDisplayModes() 
{ 
    // MVC has handy helper to find device-specfic views. Ain't no body got  time for that. 
    dynamic modeDesktop = new DefaultDisplayMode("") { ContextCondition = (c => { return true; }) }; 
    dynamic displayModes = DisplayModeProvider.Instance.Modes; 
    displayModes.Clear(); 
    displayModes.Add(modeDesktop); 
} 
相關問題