HttpWebRequest non funziona con certi url
-
martedì 1 novembre 2011 21:52
Ciao, ho appena scoperto che se il mio url termina con un punto, tipo
http://www.miosito/sezioneCheTerminaConPunto.
la web request fallisce restituendo un 404 Not Found e questo perché, per qualche motivo, elimina il punto alla fine!
Io la costruisco passando la stringa al costruttore...c'è un'alternativa per dirgli di non correggere i link?
- Modificato Squall867 martedì 1 novembre 2011 21:53
Tutte le risposte
-
martedì 1 novembre 2011 22:58Postatore
ciao
il punto è una parola chiave in genere negli URL
è normale che generi questo comportamento visto che dal punto (compreso) in poi ci si aspetta l'estensione
ma perchè hai un path simile?
se è una pagina, dagli un nome completo, .aspx ad esempio
o .svc se è un servizio wcf
Antonio Esposito
MCT, MCPD, MCTS, MCP
http://dotnetlombardia.org
-
mercoledì 2 novembre 2011 10:56
Purtroppo gli url in questione non li scelgo io..cmq ho risolto trovando un workaround online, il fatto del punto pare sia cmq un bug conosciuto della classe Uri di .NET, speriamo lo risolvano in fretta:)
Ho però un problema generico con la mia applicazione, mi sa che la sto approcciando male...potete aiutarmi nel post che ho appena aperto?
-
giovedì 3 novembre 2011 16:32Proprietario
Ciao Squall867,
Potresti cortesemente postare qualche informazione in più sulla soluzione trovata, magari servirà ad altri membri imbattuti in un caso simile?
Grazie in anticipo per la tua collaborazione,
Irina Turcu
Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.
-
giovedì 3 novembre 2011 18:40
Ciao basta invocare questa funzione una volta sola nel ciclo di vita dell'applicazione (ad esempio nel costruttore).
La funzione in sostanza modifica il funzionamento della classe Uri (utilizzata implicitamente da HttpWebRequest) affinché consideri i punti alla fine come parte integrante dell'Uri:
private void fixURI() { MethodInfo getSyntax = typeof(UriParser).GetMethod("GetSyntax", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic); FieldInfo flagsField = typeof(UriParser).GetField("m_Flags", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic); if (getSyntax != null && flagsField != null) { foreach (string scheme in new[] { "http", "https" }) { UriParser parser = (UriParser)getSyntax.Invoke(null, new object[] { scheme }); if (parser != null) { int flagsValue = (int)flagsField.GetValue(parser); // Clear the CanonicalizeAsFilePath attribute if ((flagsValue & 0x1000000) != 0) flagsField.SetValue(parser, flagsValue & ~0x1000000); } } } }
-
venerdì 4 novembre 2011 07:56Proprietario
Grazie, Squall867.
Per qualsiasi altre difficoltà incontrate, non esitare a chiedere sul Forum.
Ciao!
Irina Turcu
Questo contenuto è distribuito “as is” e non implica alcuna responsabilità da parte di Microsoft. L'azienda offre questo servizio gratuitamente, allo scopo di aiutare gli utenti e farli aumentare la conoscenza sui prodotti e le tecnologie Microsoft.




