为什么System.Data.Services.MimeTypeAttribute现在只是一个类级属性?

时间:2010-04-07 20:41:27

标签: c# asp.net wcf-data-services

我开始使用Astoria / ADO.NET数据服务/ WCF数据服务。查看那里的大量代码示例,看起来MimeType属性曾经是方法级别属性。安装the latest update后,它现在是类级属性。

如果我要将多个服务操作作为某个MimeType返回,那么现在我必须为每个操作创建一个新服务。这是对的吗?


大多数例子都是这样的:

[WebGet]
[SingleResult]
[MimeType("application/pdf")]
public IQueryable<byte[]> FooPDF()
{
    var result = from p in this.CurrentDataSource.MyPDFs
                 where p.FooID == 2
                 select p;

    return result.Take(1).Select(p => p.PDF);
}

我得到“属性'MimeType'在此声明类型上无效。它仅对'class'声明有效。”当我编译时,因为现在我不能这样做。


现在,我必须这样做:

[MimeType("FooPDF", "application/pdf")]
public class FooService : DataService<FooDBEntities>
{
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetServiceOperationAccessRule("FooPDF", ServiceOperationRights.All);
    }

    [WebGet]
    [SingleResult]
    public IQueryable<byte[]> FooPDF()
    {
        var result = from p in this.CurrentDataSource.MyPDFs
                     where p.FooID == 2
                     select p;

        return result.Take(1).Select(p => p.PDF);
    }
}

更糟糕的是,我无法向我的班级添加重复的MimeType属性。

所有这些都是by design,还是我错过了什么?

1 个答案:

答案 0 :(得分:2)

感谢您向我们报告此错误。我已经在最后打开了这个问题来跟踪这个问题

通过最近的更新,我们在数据服务中添加了对blob的支持作为第一类概念。如果您与实体有blob关联,那么服务器和客户端都有办法解决这个问题。要了解有关此内容的更多信息,请参阅以下链接:http://msdn.microsoft.com/en-us/library/ee473426(v=VS.100).aspx

希望这有帮助。

由于 PRATIK [MSFT]