2009-07-27 2 views
1

Не совсем уверен, почему я получаю исключение .. код звучит, и API работает через мой браузер.C# JSON WebClient Request throw ex

var url = new Uri("http://octopart.com/api/search?keywords=" + topic.Text); 
     WebClient octopartCall = new WebClient(); 
     octopartCall.OpenReadCompleted += new OpenReadCompletedEventHandler(Octopart_Completed); 
     octopartCall.OpenReadAsync(url); 
if (e.Error == null) 
     ... error is not null so I throw the message below 

System.Exception произошло сообщение = System.Security.SecurityException ---> System.Security.SecurityException: ошибка безопасности. в System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult) в System.Net.Browser.BrowserHttpWebRequest. <> c__DisplayClass5.b__4 (Object sendState) at System.Net.Browser.AsyncHelper. <> c__DisplayClass2.b__0 (Object sendState) --- Конец внутренней трассировки стека --- в System.Net.Browser.AsyncHelper.BeginOnUI (SendOrPostCallback beginMethod, состояние объекта) в System.Net.Browser.BrowserHttpWebRequest. EndGetResponse (IAsyncResult AsyncResult) на System.Net.WebClient.GetWebResponse (WebRequest запрос, IAsyncResult результат) на System.Net.WebClient.OpenReadAsyncCallback (IAsyncResult результат) StackTrace: на Register.Page.Octopart_Completed (отправитель объекта, OpenReadCompletedEventArgs электронной) InnerException:

ответ

2

Веб-сервер Visual Studio не может обрабатывать междоменные подключения.

Решение 1: создать новый виртуальный каталог для вашего проекта и запустить в IIS Решение 2: добавить файл конфигурации crossdomain.xml на свой веб-сайт проекта, содержащего

<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM 
    "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd"> 
<cross-domain-policy> 
    <allow-http-request-headers-from domain="*" headers="*"/> 
</cross-domain-policy> 
0

Где находится error? В обработчике Completed?

Если это так, то ваша проблема может заключаться в том, что обработчик еще не выполнен.

Кроме того, вам может потребоваться URL-адрес вашего URL-адреса, поскольку вы добавляете к нему произвольный текст.

И наконец, где это работает? ASP.NET? SilverLight? А какие версии?

+0

Запуск в SilverLight 3.0. Исключение прибывает из в моем завершенного обработчика событий на если e.Error == NULL недействительным Octopart_Completed (объект отправителя, OpenReadCompletedEventArgs е) { если (e.Error == NULL) { с использованием (Stream responseStream = e.Result) { // много работы здесь } } else {throw new Exception (e.Error.ToString()); } – rideon88

+0

Пожалуйста, не бросайте исключения таким образом. Вместо этого «throw new Exception (« Исключение найдено в Octopart_Completed », ex);' Это сохранит трассировку стека и цепь внутренних исключений. –