2009-07-27 49 views
1

不知道爲什麼我得到異常..代碼是健全的,API通過我的瀏覽器正在工作。C#JSON WebClient請求引發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:安全錯誤。 at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult) at System.Net.Browser.BrowserHttpWebRequest。 <> c__DisplayClass5.b__4(Object sendState) at System.Net.Browser.AsyncHelper。 <> c__DisplayClass2.b__0(對象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的結果) 堆棧跟蹤: 在Register.Page.Octopart_Completed(對象發件人,OpenReadCompletedEventArgsè ) InnerException:

回答

2

構建在Web服務器中的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) { 如果(e.Error == NULL){ 使用 (流responseStream = e.Result) { //大量工作在這裏 } } else {throw new Exception(e.Error.ToString()); } – rideon88 2009-07-27 04:51:33