Web API があり、XML 形式で呼び出し元のクライアントにデータを返そうとしています。
次のエラーが発生し続けます。
<ExceptionMessage>
Type '<>f__AnonymousType7`9[System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.Nullable`1[System.Int32],System.String]' cannot be serialized. Consider marking it with the DataContractAttribute attribute, and marking all of its members you want serialized with the DataMemberAttribute attribute. If the type is a collection, consider marking it with the CollectionDataContractAttribute. See the Microsoft .NET Framework documentation for other supported types.
</ExceptionMessage>
コントローラーのコードは次のとおりです。
public class TribuneShowsController : ApiController
{
private readonly TVDataEntities db;
public TribuneShowsController()
{
db = new TVDataEntities();
db.Configuration.ProxyCreationEnabled = false;
}
public IEnumerable GetTribuneShows(string title = null,
string genre = null,
string showTypeDescription = null,
string directorName = null,
string releaseYear = null)
{
var query = from shows in db.TRIB_Shows
from showTypes in
db.TRIB_LKP_ShowTypes.Where(v => v.ShowTypeCode == shows.ShowTypeCode).DefaultIfEmpty()
select new
{
dataSource = "Tribune",
shows.Title,
EpisodeId = "",
EpisodeTitle = "",
Genre = shows.Category,
showTypes.ShowTypeDescription,
shows.DirectorName,
shows.ReleaseYear,
SeasonEpisode = ""
};
if (title != null)
{
query = query.Where(s => s.Title.Contains(title));
}
if (genre != null)
{
query = query.Where(s => s.Genre.Contains(genre));
}
if (showTypeDescription != null)
{
query = query.Where(s => s.ShowTypeDescription.Contains(showTypeDescription));
}
if (directorName != null)
{
query = query.Where(s => s.DirectorName.Contains(directorName));
}
if (releaseYear != null)
{
query = query.Where(s => s.ReleaseYear.ToString().Contains(releaseYear));
}
return query.ToList();
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
私の最初の質問は、返されるオブジェクトを (API によって) XML にデフォルト設定するにはどうすればよいですか? したがって、誰かがリンクにアクセスするたびに、XML が取得されます。
2 番目の質問は、上記のコードの匿名型を XML としてクライアントに返す方法です。