Cosa decodifica il mio simbolo di hash codificato (% 23)?

Abbiamo notato che diverse macchine hanno problemi con gli URL con parametri hash.

Quando esegui il debug di una richiesta con l’URL:
http://domain.com/Entity(%23{number-here}

Vediamo nel metodo Application_BeginRequest nel file global.asax l’URL: http://domain.com/Entity(#23{number-here} in Url.OriginalString e l’ Url.LocalPath ha http://domain.com/Entity( e tutti i caratteri dopo l’hash sono in Url.Fragment .

Quando si esegue esattamente la stessa applicazione su macchine con Windows 8.1 e IIS 8.5 funziona come previsto, Url.OrinalString è http://domain.com/Entity(%23{number-here} .

Non riesco a vedere nulla di sospetto nella sezione di riscrittura degli URL nel web.config o nella configurazione di IIS.

Quale può essere la ragione di questo comportamento?

Questo è un bug in System.Web.dll. È stato risolto su Windows 8.1, ma non abbiamo ancora implementato una correzione su System.Web.dll nelle versioni di livello inferiore del sistema operativo. Stiamo cercando di ottenere una correzione per .NET 4.5.x per tutti i sistemi operativi supportati al rilascio del prossimo aggiornamento dell’affidabilità.

Ecco una soluzione alternativa per i sistemi operativi meno recenti fino a quando la correzione del bug non viene ripristinata. Se hai il lusso di cambiare l’URL, inserisci il termine che può contenere un hash in un parametro stringa di query, ad es

 http://domain.com/?entity=Entity(#23{number-here}