首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF DataService (OData)和CORS

WCF DataService (OData)和CORS
EN

Stack Overflow用户
提问于 2013-11-06 09:19:58
回答 1查看 2.5K关注 0票数 4

我正在尝试让一个WCF DataService处理跨域请求。我在如何让WCF服务与CORS一起工作时发现了这一点:http://blogs.microsoft.co.il/blogs/idof/archive/2011/07/02/cross-origin-resource-sharing-cors-and-wcf.aspx

我下载了示例,但无法让它与DataService一起工作。它适用于示例服务,但不适用于我的DataService。

这是我非常简单的WCF DataService:

代码语言:javascript
复制
public class TestService : DataService<DataContext>
{
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.UseVerboseErrors = true;
        config.SetEntitySetAccessRule("Items", EntitySetRights.All);
        config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V3;
    }
} 

TestService.svc文件:

代码语言:javascript
复制
<%@ ServiceHost Language="C#" Factory="WebHttpCors.CorsWebServiceHostFactory, WebHttpCors" Service="MvcApplication1.TestService" %>

DataContext也非常简单:

代码语言:javascript
复制
public class DataContext : DbContext
{
    public DbSet<Item> Items { get; set; }
}

但是,飞行前选项请求还是带着501返回。有什么东西是我缺少的,让CORS与数据服务工作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-07 17:48:09

如果使用IIS,请验证ExtensionLess处理程序是否配置为处理OPTIONS请求。

一些与您的直接问题无关的注意事项:由于CORS是不适当支持,您找到的包和任何其他解决方案都不会真正令人满意(您将无法轻松地指定您的策略)。使用WCF检查器创建一个由专业人员维护的包是可能的,但我还没有看到。相反,如果你同意的话,我想邀请你来投票表决

同时,我只能建议您非常小心地集成在web上找到的任何代码(因为大多数代码几乎没有经过测试)。这篇文章可能会在这方面帮助你。这与数据服务没有直接关系,但它是相同的WCF技术。也许可以从Web实现或其他项目获得灵感。

祝好运。

PS:在90%的情况下,您还需要忘记涉及代理的解决方案。在大多数架构中,它是可怕的,没有什么意义,除非您的边缘后端设计的方式会使它看起来不那么疯狂。

更新:还验证您使用的实现实际上正确地处理OPTIONS请求。如果通过它们,WCF数据服务将返回501,拦截器可能也会将其传回,即使头部设置正确。由于飞行前请求不需要身体,一个快速和肮脏的黑客将收集这些501,并将其转换为200,但很明显,你真的想阻止请求击中数据服务的第一位。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19808069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档