Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Silverlight HttpWebRequest安全性异常 问题_C#_Silverlight_Web Applications_Silverlight 4.0_Httpwebrequest - Fatal编程技术网

C# Silverlight HttpWebRequest安全性异常 问题

C# Silverlight HttpWebRequest安全性异常 问题,c#,silverlight,web-applications,silverlight-4.0,httpwebrequest,C#,Silverlight,Web Applications,Silverlight 4.0,Httpwebrequest,我有一个在远程服务器上运行的restful web服务。我已经做了一个WP7应用程序,使用它,所以我知道它的工作。我将应用程序移植到Silverlight web应用程序时遇到了问题 我已经包括了代码的简化版本以及抛出的错误。在EndGetResponse方法上抛出错误 请随时询问更多信息。我四处寻找解决方案,但没有找到任何有效或真正适用于我的问题的方法。它看起来像是如此简单的代码,在WP7版本上工作得非常完美。任何帮助都将不胜感激 代码 错误 用户代码未处理SecurityException

我有一个在远程服务器上运行的restful web服务。我已经做了一个WP7应用程序,使用它,所以我知道它的工作。我将应用程序移植到Silverlight web应用程序时遇到了问题

我已经包括了代码的简化版本以及抛出的错误。在
EndGetResponse
方法上抛出错误

请随时询问更多信息。我四处寻找解决方案,但没有找到任何有效或真正适用于我的问题的方法。它看起来像是如此简单的代码,在WP7版本上工作得非常完美。任何帮助都将不胜感激

代码 错误 用户代码未处理SecurityException

System.Security.SecurityException:安全错误

at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClass5.<EndGetResponse>b__4(Object sendState)
at System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__0(Object sendState)
--- End of inner exception stack trace ---
at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at ServieTest.MainPage.RequestCallback(IAsyncResult asyncResult)
at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClassd.<InvokeGetResponseCallback>b__b(Object state2)
at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
位于System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
在System.Net.Browser.BrowserHttpWebRequest.c__DisplayClass5.b__4(对象发送状态)中
在System.Net.Browser.AsyncHelper.c__DisplayClass4.b__0(对象发送状态)中
---内部异常堆栈跟踪的结束---
位于System.Net.Browser.AsyncHelper.BeginNoui(SendOrPostCallback beginMethod,对象状态)
位于System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
在ServiceTest.MainPage.RequestCallback(IAsyncResult asyncResult)上
在System.Net.Browser.BrowserHttpWebRequest.c__DisplayClassd.b__b(对象状态2)中
位于System.Threading.QueueUserWorkItemCallback.WaitCallback_上下文(对象状态)
在System.Threading.ExecutionContext.Run(ExecutionContext ExecutionContext,ContextCallback回调,对象状态,布尔ignoreSyncCtx)
位于System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()处
在System.Threading.ThreadPoolWorkQueue.Dispatch()中
在System.Threading.\u ThreadPoolWaitCallback.PerformWaitCallback()中

根据,Silverlight(浏览器中)尊重您请求数据的服务器的名称。由于它是您自己的web服务,您可以将
crossdomain.xml
文件添加到应用程序的根目录中,以允许外部域发出跨域请求(per)。

事实证明,我需要在服务域的根目录中添加
clientaccesspolicy.xml
文件

以下是文件的内容:

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
    <cross-domain-access>
        <policy>
            <allow-from http-request-headers="*">
                <domain uri="*"/>
            </allow-from>
            <grant-to>
                <resource path="/" include-subpaths="true"/>
            </grant-to>
        </policy>
    </cross-domain-access>
</access-policy> 


silverlight实现在浏览器外运行时是否有效?我看到了这两篇文章,但我认为这不是服务的问题,因为WP7应用程序使用它(Android和iPhone应用程序也使用它)。该服务是围绕一个简单的
HttpListener
构建的。我可以尝试添加
crossdomain.xml
文件,但我真的不知道如何让它驻留在域的根目录下。如果服务驻留在根目录下(
http://some-example-restful-service:5600/
)然后您可以检查
HttpListenerRequest.Url
中的
“crossdomain.xml”
并使用适当的XML进行响应。WP7不检查跨域策略,因为WP7应用程序没有源代码且被认为是可信的。好的,我在域的根目录下有
crossdomain.XML
文件,如果我用浏览器访问它,就可以看到它,但是我还是遇到了这个应用程序的例外。我不确定为什么
crossdomain.xml
文件没有解决这个问题,但是你的解决方案确实帮助我弄清楚了我必须做什么,我把它作为另一个解决方案发布了。
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
    <cross-domain-access>
        <policy>
            <allow-from http-request-headers="*">
                <domain uri="*"/>
            </allow-from>
            <grant-to>
                <resource path="/" include-subpaths="true"/>
            </grant-to>
        </policy>
    </cross-domain-access>
</access-policy>