errore di sicurezza durante l'accesso WebClient World of Warcraft armeria
-
04-10-2019 - |
Domanda
Sto cercando di mettere insieme una soluzione ad un problema. Fondamentalmente sto usando Silverlight 4 con C # 4.0 per accedere al mondo di Warcraft armeria. Se qualcuno ha fatto questo -. Si prega oh si prega di fornire il lavoro .net codice di 4.0
Il codice che sto tentando di eseguire è (e.Error contiene un errore di securtiy):
private void button10_Click(object sender, RoutedEventArgs e)
{
string url = @"http://eu.wowarmory.com/guild-info.xml?r=Eonar&n=Gifted and Talented";
WebClient wc = new WebClient();
// HOW DO I ADD A USER AGENT STRING (RESPONSE MAY VARY (I.E. HTML VS XML) IF PAGE THINKS CALL IS NOT CAPABABLE OF SUPPORTING XML TRANSFORMATIONS)
//wc.ResponseHeaders["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)";
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
wc.DownloadStringAsync(new Uri(url));
}
void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
string result = e.Result;
XDocument ArmouryXML = XDocument.Parse(result);
ShowGuildies(ArmouryXML);
}
else
{
MessageBox.Show("Something is complaining about security but not sure what!");
}
}
Note:
- C # 4.0
- L'armeria è un file XML - ma credo che ritorna in html dovrebbe la richiesta non sia da un browser che supporti la trasformazione XML. Ma non credo che sto ottenendo fino a questo punto.
- L'armeria dispone di un file di criteri interdominio su di essa - questa potrebbe essere la causa dell'errore (non sono sicuro
- Ho caricato su un server di produzione
- sto testando in locale utilizzando il sito IIS
- Vado pazzo!
- siti web hanno fatto l'idea che questo problema può essere superato con la creazione di un WebProxy -. Ma non ho il primo indizio come fare questo
Sarebbe bello se qualcuno potesse raccogliere questa sfida e ci mostrano tutto ciò che è possibile. Preferirei una soluzione non-proxy prima, quindi provare un proxy.
I dettagli di errore:
e.Error = {System.Security.SecurityException ---> System.Security.SecurityException: errore di sicurezza. a System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult) a System.Net.Browser.BrowserHttpWebRequest. <> c__DisplayClass5.
Qualsiasi maestri programmatori intelligenti là fuori che possono risolvere questa nel sonno?
Grazie, se si può aiutare.
Soluzione 3
RISOLTO - ha utilizzato un servizio WCF per agire come un proxy a causa di restrizioni di sicurezza del dominio e di modifica dell'intestazione croce. Grazie per tutti i consigli.
Altri suggerimenti
Quando si esegue un'applicazione Silverlight in un browser, l'applicazione Silverlight può fare solo richieste a URL dallo stesso dominio come l'applicazione è stata installata da. Per esempio, se la vostra applicazione Silverlight è installato da http://yoursite.com/yourapp.xap
, è possibile effettuare solo le richieste di WebClient ad altri URL su http://yoursite.com/
. Le opzioni qui sono o creare uno script proxy che chiede alla WoW Armory dal server, ed avere la vostra applicazione Silverlight ha colpito che procura, o eseguire il silverlight out-of-browser e richiedere piena fiducia.
Modifica: In genere l'opzione migliore è un file di criteri dei domini come spiegato qui . Purtroppo, non sembra che wowarmory.com implementa il file di criteri dei domini.
eri sulla strada giusta, basta impostare l'user-agent.
private void button10_Click(object sender, RoutedEventArgs e)
{
string url = @"http://eu.wowarmory.com/guild-info.xml?r=Eonar&n=Gifted and Talented";
WebClient wc = new WebClient();
// HOW DO I ADD A USER AGENT STRING (RESPONSE MAY VARY (I.E. HTML VS XML) IF PAGE THINKS CALL IS NOT CAPABABLE OF SUPPORTING XML TRANSFORMATIONS)
//wc.ResponseHeaders["User-Agent"] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)";
wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)";
wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted);
wc.DownloadStringAsync(new Uri(url));
}
void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
if (e.Error == null)
{
string result = e.Result;
XDocument ArmouryXML = XDocument.Parse(result);
ShowGuildies(ArmouryXML);
}
else
{
MessageBox.Show("Something is complaining about security but not sure what!");
}
}