一尘不染

如何为现有WCF服务本地启用JSONP?

json

我有一个像下面的方法这样的现有服务:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
public class SomeService : ISomething
{
    public SomeListResults SomeList(SomeParams someParams)
    {
          ....
    }
}

有没有一种简单的方法可以同时允许JSONP调用和JSON(检测它)。这是本地人吗?


阅读 179

收藏
2020-07-27

共1个答案

一尘不染

更新您的配置,如下所示:

<configuration>
  <system.web>
    <compilation debug="true" targetframework="4.0">
    <authentication mode="None">
  </authentication></compilation></system.web>
  <system.webserver>
    <modules runallmanagedmodulesforallrequests="true">
  </modules></system.webserver>
  <system.servicemodel>
    <servicehostingenvironment **aspnetcompatibilityenabled**="true">
    <standardendpoints>
      <webscriptendpoint>
        <standardendpoint **crossdomainscriptaccessenabled**="true" name="">
      </standardendpoint></webscriptendpoint>
    </standardendpoints>
  </servicehostingenvironment></system.servicemodel>
</configuration>

请参阅此处的博客文章,其中提供了创建可跨域访问的wcf服务的演练。

这将使您的服务能够接受来自跨域来源的请求。

在确定是否填充您的响应(jsonp中的p)方面,

感谢@carlosfigueira:

如果使用.Net 4,则JSONP本身受支持。只要请求具有称为“ callback”的查询字符串参数(可以配置此名称),则将使用函数名称填充响应。

否则,您将需要编写一个自定义消息检查器来适当填充响应。

2020-07-27