【问题标题】:Why does setting WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Redirect cause SecurityException?为什么设置 WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Redirect 会导致 SecurityException?
【发布时间】:2012-08-19 02:03:39
【问题描述】:

我正在 .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,但我没有得到比这更多的细节。关于这里可能发生什么的任何想法?

【问题讨论】:

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


【解决方案1】:

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

【讨论】:

  • 客户端重定向会更好,我同意,但是,url 中的数据是敏感的,我们宁愿不要传递它超过我们需要的。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多