2015-11-13 18 views
5

Ho due chiamate identiche a ASP.NET, l'unica differenza è l'utente-agente. Ho usato Fiddler per riprodurre il problema.Caratteri non validi nel percorso in base all'agente utente?

La linea di richiesta HTTP è:

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

Compatibile con:

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 

fallisce con:

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 

Tutto il resto è al 100% la stessa.

+0

Come ci si falliscono? Qual è il codice di stato restituito? Qualche traccia di errore sul lato server? – fiddler

+0

Errore server nell'applicazione '/ Api'. Caratteri non ammessi nel percorso. ArgumentException: caratteri non validi nel percorso.] System.IO.Path.CheckInvalidPathChars (percorso stringa, controllo booleanoAddizionale) +13766780 System.IO.Path.GetExtension (percorso stringa) +28 System.Web.WebPages.DefaultDisplayMode.TransformPath (String virtualPath, suffisso String) +49 System.Web.WebPages.DefaultDisplayMode.GetDisplayInfo (HttpContextBase HttpContext, String virtualPath, Func'2 virtualPathExists) +33 System.Web.WebPages.DisplayModeProvider.GetDisplayInfoForVirtualPath (String virtualPath, HttpContextBase, .. – user2105237

+0

Vorrei chiarire che il problema sembra non essere correlato a Fiddler: ho appena usato il violinista per tracciare le chiamate – user2105237

risposta

3

Nel mio caso, la causa principale erano i provider MultipleViews e DisplayMode di MVC. Ciò consente alle app MVC di acquisire magicamente visualizzazioni specifiche del dispositivo; per esempio. custom.cshtml customer.mobile.cshtml

Questo articolo ha una buona spiegazione delle funzionalità così come i dettagli su come spegnerlo: https://msdn.microsoft.com/en-us/magazine/dn342866.aspx

ho risolto questo con l'aggiunta pacchetto Microsoft.AspNet.WebPages al mio progetto e l'aggiunta di una chiamata a questo codice nel mio avvio (Application_Start in Global.asax o se si utilizza OWIN, il metodo decordated w/OwinStartup attributo):

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); 
} 
Problemi correlati