Я начинаю с Astoria / ADO.NET Data Services / WCF Data Services. Просматривая множество примеров кода, кажется, что атрибут MimeType раньше был атрибутом уровня метода. После установки последнего обновления теперь оно является атрибутом уровня класса.
Если у меня есть более одной Сервисной операции, которую я хочу вернуть как определенный 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' недопустим в этом типе объявления. Он действителен только в объявлениях класса". когда я компилирую, потому что теперь я не могу этого сделать.
Теперь я должен сделать это:
[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 в свой класс.
Действительно ли все это задумано , или я что-то упустил?