ListData.svc con filtri complessi, Internet Explorer, 400 cattiva richiesta HTTP,
-
10-12-2019 - |
Domanda
Ho un problema la comprensione di come generarecodicitagcode può essere debug utilizzando IE8 e IE9.
Ho un URL che assomiglia a questo:
ListData.svc
e mostra EQ TRUE
Quando provo ad accedervi utilizzando IE8 dal mio server standalone di SharePoint, ricevo errore 400.
Quando richiedo lo stesso URL usando Firefox funziona bene.
in cima a quel hostname:8181/_vti_bin/listdata.svc/ImageBanners?$filter=endswith(Path,'TopLeft')
funziona come dovrebbe essere anche in IE. Quindi il problema sembra essere nella parte hostname:8181/_vti_bin/listdata.svc/ImageBanners
.
comunque. Quando chiedo lo stesso URL in IE8 utilizzando l'indirizzo IP del server o localhost ottengo risultati corretti anche con filtri complessi.
Qualcuno può, per favore, versare una luce su questo mistero? Perché ottengo questo tipo di comportamento?
Informazioni aggiuntive:
- .
- SharePoint ha la versione russa e inglese installata.
- L'applicazione SharePoint utilizza l'autenticazione NTLM.
- L'autenticazione anonima in IIS è disabilitata.
-
Fiddler mostra che ogni risorsa è richiesta due volte. La prima volta che il server restituisce 401 e poi 200 o 400 a seconda del browser e dell'URL (vedere i dettagli sopra).
- .
- Quando accedo
$filter=endswith
utilizzando Firefox Corretto la richiesta HTTP è simile a questo:.
Accetta: testo / html, applicazione / xhtml + xml, /
Accetta-Lingua: EN-IT
User-Agent: Mozilla / 5.0 (Compatibile; Msie 9.0; Windows NT 6.1; wow64; Trident / 5.0)
Accettazione-codifica: Gzip, deflate
Connessione: Keep-Alive
Cookie: wsss_keepsessionAuthenticated= {B3987DAA-D463-415F-8FB3-D556C27E5BBF}
Host: localhost: 8181
Autorizzazione: NTLM TLRMTVNTU ...- .
- Quando si utilizza la richiesta HTTP IE8 è simile (nota
ListData.svc
. Forse potrebbe essere il problema?):.
Accetta: immagine / jpeg, immagine / gif, immagine / pjpeg, applicazione / applicazione x-ms, applicazione / xaml + xml, applicazione / x-ms-xbap, /
Accetta-Lingua: EN-IT
User-Agent: Mozilla / 4.0 (Compatibile; Msie 7.0; Windows NT 6.1; WOW64; TRENTING / 5.0; SLCC2; .NET CLR 2.0.50727; .NET4.0C; .NET4.0e; .NET CLR 3.5.30729;. Net CLR 3.0.30729; InfoPath.3)
Accettazione-codifica: Gzip, deflate
Connessione: Keep-Alive
Cookie: LCID= 1049; Wsss_keepsessionAuthenticated= {B3987DAA-D463-415F-8FB3-D556C27E5BBF}
Autorizzazione: NTLM TLRMTVNTU ...
Host: nome host: 8181
- Quando si utilizza la richiesta HTTP IE8 è simile (nota
- Quando accedo
Soluzione
L'ho finalmente bloccato. Si è rivelato essere la caratteristica del riposo di Sharepoint. Avevo bisogno di prendere Ui Language in considerazione!
Ad esempio, in caso di localizzazione IT-US La query di riposo dovrebbe assomigliare a questo:
.? $ Filter= Endswith ( Percorso , 'PiederName')
Ma in ru-ru diventa:
.? $ Filter= Endswith ( путь , 'foldername')
Inoltre, è necessario sfuggire alle lettere russe. Quindi, finalmente dovrebbe assomigliare a questo:
.? $ Filtro= Endswith (% D0% 9F% D1% 83% D1% 82% D1% 8C ", 'FolderName')
Questo non è l'unico problema, tuttavia ... il JSON che ricevo anche risulta essere localizzato. Con questo intendo che le proprietà hanno nomi localizzati diversi . Ad esempio, restituito JSON in EN-US:
.{... "modificato": 1, "copysource": NULL, "ApprovalStatus": "0", "Percorso": "/ Elenchi / Imagebanners / Bouthright" ...}
in ru-ru:
.{.... "Кемизмененоid": 1, "источниккопии": null, "состояниеутверждения": "0", "путь": "/ list / elenchi / imagebanners / Bouthright" ...}
È un problema, perché è davvero difficile prevedere i nomi delle proprietà per diverse lingue. Spero che queste informazioni siano utili avvertimento per qualcuno.