5

我正在将数据发布到服务器并成功执行 BeginGetRequestStream,然后是 EndGetRequestStream,将我的 POST 数据写入到 RequestStream 中,然后调用 BeginGetResponse。

BeginGetResponse 成功返回,然后我调用:

Dim response As HttpWebResponse = CType(MyHttpRequest.EndGetResponse(asynchronousResult), HttpWebResponse)

此行引发以下 SecurityException 错误:

{System.Security.SecurityException ---> System.Security.SecurityException:安全错误。
在 System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
在 System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.b__4(Object sendState)
在 System.Net.Browser.AsyncHelper.<>c__DisplayClass2.b__0(Object sendState)

--- 内部异常堆栈跟踪结束 ---
在 System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
在 System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
在 EtsyV2NetSL.WebQuery.POST_ResponseCallback( IAsyncResult asynchronousResult)}

所以我的第一个想法是我被服务器用他们的 clientaccesspolicy.xml 或 crossdomain.xml 阻止了。我启动了 Fiddler 并看到了以下内容:

GET http://openapi.etsy.com/clientaccesspolicy.xml > 596 (text/xml)
GET http://openapi.etsy.com/crossdomain.xml > 200 OK (application/xml)

所以我检查了他们的 crossdomain.xml 并且设置看起来没问题:

<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
   <allow-access-from domain="*"/>
</cross-domain-policy>

我在试图解决这个问题时遇到了死胡同。我正在我的开发机器上从 VS 运行测试应用程序。

有没有人知道为什么 Silverlight 会抛出这个错误?

谢谢

4

2 回答 2

1

我今天处理了一个非常相似的问题——但是我试图进行 WCF 服务调用,而不是 HTTP POST。

这是我在我的代码中放置的评论 - 如果它不够清楚而无法提供帮助,请告诉我。

// NB: Cross-domain bug
// If you end up here with a System.Security.SecurityException "Security error."
// Check that you're not trying to cross zones when making a service call
// (eg: Accessing Trigger Driver TimeSource service on http://IASWEB01/ when accessing the site via usertest.local
//  or any other URI with dots in it - yes it seems crazy)

这似乎是一些安全“功能”。通过 WCF 调用,我什至在 Silverlight 客户端尝试从目标主机获取 clientaccesspolicy.xml 之前就遇到了这个异常。非常烦人的问题,没有真正的解决方案!

于 2010-11-18T14:32:45.953 回答
1

似乎是客户端访问策略问题,请检查:

http://forums.silverlight.net/forums/p/26566/90867.aspx

它对我有用。

于 2011-01-03T16:14:54.300 回答