WCF DataService 不支持预检选项请求?

2024-03-30

我想使用基于 ajax 的组件 (KendoUI) 来读取/修改 WCF DataServices 实现的 OData 端点上的实体。

首先,服务实现相当简单:

public class MyFooService : DataService<FooContext>
{
    public static void SetEntitySetAccessRules(IDataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("Foos", EntitySetRights.AllWrite);
    }
}

现在我期望能够使用 PUT 修改实体。 KendoUI 提供了一个漂亮且简单的配置界面,并且在生成 PUT 请求方面做得很好。

我们正在发出跨域请求并使用 CORS。因此,例如,Firefox 在发送 PUT 之前向 OData 服务发送预检 OPTIONS 请求。

不幸的是,服务端点似乎不支持开箱即用的 OPTIONS:对 OPTIONS 请求的响应是“501 Not Implemented”,内容为空。至少我们设法使响应具有如下 CORS 标头:

<system.webServer>
  <modules runAllManagedModulesForAllRequests="true" />
  <!-- Enable cross-origin resource sharing -->
  <!-- http://enable-cors.org/#how-asp.net -->
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Methods" value="POST, PUT, DELETE, GET, OPTIONS" />
      <add name="Access-Control-Allow-Headers" value="content-Type, accept, origin, X-Requested-With" />
      <add name="Access-Control-Allow-Credentials" value="true" />
    </customHeaders>
  </httpProtocol>
</system.webServer>

谷歌搜索这个有点具有挑战性,因为“选项”是一个非常流行的术语......

I found 本文 http://blogs.msdn.com/b/carlosfigueira/archive/2012/05/15/implementing-cors-support-in-wcf.aspx但看起来很、very复杂的。我的意思是,OData 就是 REST,我无法想象 WCF 数据服务不提供允许预检请求的简单方法,或者?


目前,WCF DataServices 不支持 CORS,我见过的每个解决方案都是黑客行为,并且工作充其量也很不稳定。

我遇到了同样的问题,我只是将代码从 WCF 移植到 Web API 2 OData 解决方案。 Web API 2 支持 CORS,而且设置非常简单。

如果您熟悉 Web API,请查看此链接:http://msdn.microsoft.com/en-us/magazine/dn532203.aspx http://msdn.microsoft.com/en-us/magazine/dn532203.aspx

以下是有关如何使用 Web API 创建 OData 端点的教程:http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v3/creating-an-odata-endpoint http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api/odata-v3/creating-an-odata-endpoint

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WCF DataService 不支持预检选项请求? 的相关文章

随机推荐

  • 使用 Iso_Fortran_Env 设置函数的 Kind 值

    如何使用 ISO Fortran Env 的内在函数以 Fortran 2008 惯用的方式设置函数的返回 KIND 值 通常在主程序中 我可以使用 ISO Fortran 内在函数 如下所示 program name here use i
  • jQuery 事件适用于 Firefox,不适用于 Chrome

    我在代码中注册了一些点击事件 它们在 Firefox Windows 和 Mac 中正常运行 但在 Chrome 中无法执行 尝试过 Windows 和 Mac beta JavaScript 的目的是根据 select 元素的值显示正确的
  • 检查一个 Int 值是否大于或等于另一个 Int 值?价值? [复制]

    这个问题在这里已经有答案了 如何比较两个 Int 值 所以 我有这个 let limit Int let current Int Int self stringValue 但是当我尝试比较它们 大于或等于 时 if current gt s
  • 如何使 JAWS 等屏幕阅读器可以访问“正在加载”图标?

    所以 HTML 代码是这样的 div style display none img src PT LOADING gif alt Processing please wait title div 即使提供了 ALT 文本 在更改样式以显示图
  • 函数 while 循环中的 return 是如何处理的?

    我有一个函数 该函数内部有一个 while 循环 当我尝试使用 IF 语句在 while 循环内设置非局部变量 然后退出整个函数时 突然该变量不再设置 function EXAMPLE cat test txt while read LIN
  • insertRow 与appendChild

    向表中添加行时首选哪种方法 var tr tbl insertRow 1 or var tr document createElement tr tbl appendChild tr insertRow会好得多 这是支持的 http www
  • 为什么此 GeoTool 片段不生成可查看的 shapefile?

    我正在创建一个简单的程序 它从 csv 文件读取值并根据这些值创建 shp 文件 这是一个轻微的修改这个例子 http docs geotools org latest tutorials feature csv2shp html 形状文件
  • JUL 适配器不适用于 Jersey

    我正在尝试使用七月适配器将 Java Util Logging 委托给 Log4j2 更准确地说 任何使用 JUL 生成日志的第三方库都应该委托给 Log4j2 作为一个简单的练习 我创建了一个使用库的独立应用程序 我创建这个库是为了测试目
  • Steam API 所有游戏

    我一直在阅读论坛并尝试 Steam API 我正在寻找提供所有 Steam 游戏的 API 我发现提供所有 SteamApp 的 API 以及提供应用程序信息的 Steam 商店 API 我正在寻找类型 游戏 但为此 我需要为每个 Stea
  • 如何在两个微服务之间共享 REST 服务实体?

    我使用 java 创建了两个微服务 我需要从服务 A 到服务 B 进行 REST api 调用 发送的数据将采用 JSON 格式 使用 jax rs 我需要在这两个服务中创建实体类 由于两个项目中的实体类相同 我可以吗 创建一个通用 jar
  • ES 2017:异步函数 vs AsyncFunction(object) vs 异步函数表达式

    我刚刚读到async functions并遇到了 ES2017 的一些类似功能 它造成了很多混乱 我只想问 有什么区别async function AsyncFunction 用于创建异步函数 和异步函数表达式 我认为这只是另一个异步函数
  • Scrapy 遭遇 DEBUG:爬行(400)

    我正在尝试使用 Scrapy 抓取页面 https zhuanlan zhihu com wangzhenotes 我运行这个命令 scrapy shell https zhuanlan zhihu com wangzhenotes and
  • python中的{}和[]有什么区别?

    有什么区别columnNames and columnNames 在Python中 我怎样才能迭代每一个 使用 for value in columnNames OR for idx o val o in enumerate columnN
  • 具有多个类约束的 Haskell 类型签名

    我怎样才能有多个类约束 所以如果A is an Eq and B is a Num 我可以说 f Eq a gt a gt b or f Num b gt a gt b 那么 我怎样才能拥有Eq a gt and Num b gt 同时 f
  • 如何自定义jquery滑块范围的颜色?

    使用 jquery 滑块时 我想将所选范围的默认颜色从灰色更改为蓝色 document ready function var slider slider slider range min min 0 max 100 change funct
  • 如何使用Lucene实现拼音搜索?

    我想使用 Lucene 6 1 0 Soundex 或任何适合葡萄牙语的算法来实现语音搜索 我在互联网上发现了许多不完整的示例 教如何实现自定义分词器 分析器 但似乎这些示例上使用的抽象类在 6 1 0 版本中并不相同 谁能指出我在哪里可以
  • 一元运算与赋值融合

    以下代码中的结果值得怀疑 public static void main String args int i 2 i i 2 i System out println i 本来期待着8作为输出 因为 i 2 应该update我 但它的行为并
  • 重写 XMLHttpRequest.open()

    我怎样才能覆盖XMLHttpRequest open 方法然后捕获并改变它的参数 我已经尝试过代理方法 但它不起作用 尽管删除了打开覆盖XMLHttpRequest 被称为 function var proxied window XMLHt
  • 帮助设置 Ruby on Rails 和 MySQL - 提供奖励

    我迫切需要任何慈善红宝石 Rails 专家的帮助 我真的很想学习RoR 但我无处可去 因为每次我到达需要连接数据库的阶段时 都会出现一些问题 这就是我现在要做的事情 Mac OSX 10 6 6 红宝石 1 9 2 导轨 3 0 5 MyS
  • WCF DataService 不支持预检选项请求?

    我想使用基于 ajax 的组件 KendoUI 来读取 修改 WCF DataServices 实现的 OData 端点上的实体 首先 服务实现相当简单 public class MyFooService DataService