我宁愿避免进入关于 HTTP 动词 PUT 和 DELETE 是否合适或过时的辩论,而是专注于在“被迫”使用这些动词时实际使 Silverlight 工作的问题。
我正在尝试创建一个 Silverlight 4 客户端应用程序,该应用程序调用具有 PUT 和 DELETE 动词操作的现有 REST Web 服务。这项服务不会改变。
我在 App.xaml.cs 的构造函数中添加了以下语句:
WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
该服务有一个 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>
我正在使用 WebClient 类来处理 GET 和 POST 请求。当我尝试对动词/方法的 PUT 或 DELETE 执行相同操作时,我得到一个模棱两可的“安全错误”,这导致我添加了上面的语句。
我看过各种帖子和博客文章谈论使用 HttpWebRequest 来解决这个问题,但还没有找到真正展示如何从 Silverlight 客户端进行这些(异步)调用的文章和博客文章。
如果上面的代码有问题,请告诉我。否则,如果您可以向我展示或指出如何实现这些请求的示例,我将非常感谢您的帮助。