将CORS支持添加到传统的asp.net soap服务

时间:2015-05-11 17:43:18

标签: asp.net soap cors asp.net-3.5

为了允许开发人员连接到开发服务器,我想启用CORS。在开发服务器上,我添加了以下web.config选项:

   <add name="Access-Control-Allow-Origin" value="http://localhost:3000" />
   <add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS" />
   <add name="Access-Control-Allow-Headers" value="Content-Type" />
   <add name="Access-Control-Allow-Credentials" value="true" />

当我点击ASMX和WSDL(例如/SomeService.asmx?WSDL)时,我看到了标题。但是,当我的开发合作伙伴使用的客户端库访问该服务时,它会立即对目标方法执行OPTIONS请求:

OPTIONS /SomeService.asmx/GetAll HTTP/1.1
etc.

同样,存在适当的CORS标头,但服务器提供500状态代码,并且不会发生后续的真实请求。如果使用GET谓词代替OPTIONS请求,则会出现同样的错误。

我可能需要在我的soap服务中处理非POST个请求(特别是OPTIONS)。但是,我甚至不确定从哪里开始。我已经尝试将其添加到网络配置中:

<webServices>
  <protocols>
    <add name="HttpGet" />
    <add name="HttpPost" />
  </protocols>
</webServices>

这允许GET请求通过;但它们的处理方式似乎已经完整POSTOPTIONS仍然失败。

在传统的asp.net(.net 3.5)ASMX / SOAP服务中,是否有一种处理自定义和/或OPTIONS动词的简单方法?或者,是否更快如何让客户端开发人员访问开发服务器的服务?

0 个答案:

没有答案