为什么设置WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Redirect导致SecurityException?

时间:2012-08-23 14:10:54

标签: c# rest exception-handling http-status-code-301 securityexception

我正在.Net 4中开展Rest Service,我需要执行重定向。

我正在做的一些描述:我有一个包含按钮的silverlight应用程序。当我单击该按钮时,我向我的REST服务发送一个POST请求,其中包含一些信息。根据该信息,我创建了一个URL并(尝试)重定向浏览器。这是服务中方法的代码:

[WebInvoke(Method = "POST", UriTemplate = "OpenBinder")]
public void OpenBinder(int someId)
{
    string url = getUrl(someId);
    if (WebOperationContext.Current != null)
    {
        WebOperationContext.Current.OutgoingResponse.Location = url;
        WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Redirect;
    }
}

这似乎正确执行,但是当我在客户端上调用EndGetResponse时,我发现发生了“安全错误”。这是System.Security.SecurityException,但我没有得到任何更多细节。关于可能会发生什么的任何想法?

2 个答案:

答案 0 :(得分:0)

如果没有更多信息,我不确定您的具体安全性错误是什么,但通常在这种情况下,您的重定向应该发生在响应处理程序的客户端。您可以重构代码以使客户端重定向吗?

答案 1 :(得分:0)

好的,所以我的代码实际上正常工作。当我查看Fiddler时,我注意到它正在向Url提出正确的请求。问题是clientacesspolicy.xml正在阻止它。