WCF サービスで非同期メソッドを作成しようとしていますが、上記の件名のエラー メッセージが表示されます。単にカテゴリのリストを返したいだけです。
わかりやすくするために、上記のエラー メッセージの最後に次を追加してください: YeagerTechModel.Category[]
wcfclient サービスは、このメソッド (横に赤い「X」が付いている) を除いて正常に追加されました。実際には、すべてのメソッド (wcf サービス クライアント内) は、関連付けられた非同期メソッド (赤い「X」が付いている) と、残りの通常の同期メソッドを組み合わせて使用する必要があります。
WCF の使用方法は知っていますが、専門家ではありません。これを正しく機能させるにはどうすればよいですか?
私は VisualStudio 2013 の本格的なリリース バージョンを使用しており、4.5.1 フレームワークを使用するプロジェクトを持っています。EntityFramework 6も使用しています。
私のサービス コントラクトには、次の名前空間が含まれています。
using System.Threading.Tasks;
私の運用契約は以下の通りです。
[OperationContract(Name="GetCategoriesAsync")]
Task<List<Category>> GetCategoriesAsync();
私の DataContract は次のとおりです。
namespace YeagerTechModel
{
using System;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Collections.Generic;
[Serializable, DataContract(IsReference = true)]
public partial class Category
{
public Category()
{
this.Projects = new HashSet<Project>();
}
[DataMember]
public short CategoryID { get; set; }
[DataMember]
public string Description { get; set; }
[DataMember]
public virtual ICollection<Project> Projects { get; set; }
}
}
私のWebサービスのメソッドは次のとおりです。設計時のコンパイル エラーはなく、ソリューションを正常にビルドできることに注意してください。
public async Task<List<Category>> GetCategoriesAsync()
{
try
{
using (YeagerTechEntities DbContext = new YeagerTechEntities())
{
DbContext.Configuration.ProxyCreationEnabled = false;
DbContext.Database.Connection.Open();
var category = await DbContext.Categories.ToListAsync();
return category;
}
}
catch (Exception ex)
{
throw ex;
}
}