WCF CORS问题 - WPF应用程序成功连接但Angular App抛出405

时间:2016-05-20 20:09:37

标签: wcf rest cors

我对启用跨域调用有疑问。

我有一个托管在xyz域中的WCF Rest服务。我能够从Advanced Rest Client,Postman和Fiddler测试这些REST API。我还有一个WPF应用程序,主动调用这些API,这些API托管在不同的域(比如abc域)中,可以很好地获取响应。 但是,当我创建一个新的Angular Web应用程序和一个Windows服务(部署在abc域上),并尝试从这两个组件调用API时,我收到405错误。

有人可以解释一下:

  1. REST客户端如何始终能够成功建立连接?
  2. 即使我的WPF如何成功连接到WCF服务 它在不同的域名上?
  3. 为什么我的Windows服务/ Web应用程序无法与WCF通信?

1 个答案:

答案 0 :(得分:0)

我认为这里的问题是由preflight request引起的。浏览器会发出此OPTIONS动词请求,询问服务器是否允许origin以不安全的方式调用API。

如果您的WCF REST服务未处理此请求,则WCF运行时将尝试将请求分派给您的服务实现。 但是,如果运行时没有找到调用此动词的方法,它将返回405 Method Not Allowed响应。

我过去使用IOperationInvoker实施,通过IOperationBehavior进行安装,从而解决了这个问题。这个article描述了一种略微不同的做法基本相同。