【问题标题】:The 'crossDomainScriptAccessEnabled' attribute is not allowed不允许使用“crossDomainScriptAccessEnabled”属性
【发布时间】:2014-05-29 07:36:34
【问题描述】:

我创建了一个 WCF 服务,它从 mySQL 数据库接收数据并在浏览器中显示为 JSON 数据。

浏览器返回的JSON数据如下:

{"shipmentDetails":[{"Name":"AAA","Number":"123"},{"Name":"BBB","Number":"321"}]}

但我无法修改此服务以启用跨域访问,

错误出现在这里:web.config

<webHttpBinding>

<binding name="jsonpWebHttpBinding"  'crossDomainScriptAccessEnabled="true"></binding>

</webHttpBinding>

我恳请任何人帮助我了解为什么不支持此属性。

提前致谢。

【问题讨论】:

  • 您使用的是什么版本的 .NET?首先想到的是你现在使用的框架版本不支持它。 MSDN 显示它是在 .NET 4.0 中引入的。 msdn.microsoft.com/en-us/library/…
  • 我正在使用 MS VS2010...
  • 但是您项目中的目标框架是什么?是3.5还是4?右键单击项目文件并单击属性...
  • 谢谢@Icarus 它可以工作.. 以前我有 3.5.. 现在我将其更改为 4.0..

标签: c# json wcf cors


【解决方案1】:

(在 OP 确认我的 cmets 将他指向正确的方向后添加答案...)

OP 之所以出现The 'crossDomainScriptAccessEnabled' attribute is not allowed 错误,是因为该属性首先在 .NET 4.0 中引入,并且 OP 的项目针对 .NET 3.5。将项目更改为.NET 4.0后,问题得到解决。

【讨论】:

    【解决方案2】:

    为什么属性crossDomainScriptAccessEnabled之前有符号'?

    如果你在 IIS 上托管你的服务,你可以试试这个:

    <system.webServer>
      <httpProtocol>
        <customHeaders>
          <add name="Access-Control-Allow-Origin" value="*"  />
          <add name="Access-Control-Allow-Methods" value="GET"  />
        </customHeaders>
      </httpProtocol>
    </system.webServer>
    

    它可以让您更好地控制访问域和访问方法。

    您还可以编写您的行为来为您的消息添加适当的标题:Cross-domain

    【讨论】:

    • 注意:Access-Control-Allow-Origin: * 允许任何存在安全风险的域
    猜你喜欢
    • 1970-01-01
    • 2014-05-23
    • 1970-01-01
    • 1970-01-01
    • 2021-05-13
    • 2011-05-06
    • 2011-03-30
    • 2020-10-01
    • 2015-10-19
    相关资源
    最近更新 更多