web-dev-qa-db-ja.com

サーバーで要求の処理中にエラーが発生しました。詳細については、サーバーログを参照してください

簡単な問題があります。

Visual Studio 2013でWCF Data Service 5.6を作成し、その*.svc.csファイル、変更された行

public class CustomdataService : DataService< /* TODO: put your data source class name here */ >

エンティティを接続する

public class CustomdataService : DataService< SchedulerEntities >

しかし、ブラウザでサービスを表示したい場合、次のエラーが表示されます

リクエストエラー

サーバーで要求の処理中にエラーが発生しました。詳細については、サーバーログを参照してください。

エンティティフレームワークは1つのテーブルにすぎません...

24
Kourosh

Entity Framework 6とWCF Data Services 5.6.0では、連携するためにプロバイダーが必要なようです。詳細については、 Entity Framework 6+でのWCF Data Services 5.6.0の使用 を参照してください。

NuGet Package Console Managerを使用するだけで、プロバイダーをダウンロードできます。

Install-Package Microsoft.OData.EntityFrameworkProvider -Pre

バージョンはアルファ2なので、将来的には最終リリースを検索してください。しかし、私にとってはうまくいきました。

最後に、DataService<T>を使用する代わりに、EntityFrameworkDataService<T>を使用する必要があります。 Tは、エンティティの名前です。

23
Kourosh

実際のエラーは異なる場合があります。私の場合、AdventureWorks2012データベースを起動すると、同じ一般的なエラーメッセージが表示されました。

したがって、実際の問題は、 here で説明されているように、サービスクラスに属性を追加することで確認できます。

[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class WcfDataServiceAW : EntityFrameworkDataService<AdventureWorks2012Entities> { ... }

それが誰かを助けることを願っています。

PS。私のエラーは:

例外メッセージは、「タイプ 'Address'のプロパティ 'SpatialLocation'は、タイプ 'Geography'であり、サポートされているプリミティブ型ではありません。」です。

25
Artyom

この投稿 によると、CustomdataServiceの継承型を変更する必要があります。

DataServiceの基本タイプを置き換えます。 EF 5以下の場合、データサービスはDataServiceから継承する必要があります。TはDbContextまたはObjectContextです。 EF 6以降の場合、データサービスはTがDbContextであるEntityFrameworkDataServiceから継承する必要があります。詳細については、下記のDataServiceとEntityFrameworkDataServiceの違いをご覧ください。

5
Jakub Kuszneruk

edmxに移動し、図で、必要なテーブルが1つだけ残るまですべてのテーブルを削除します。その後、すべてのテーブルを保持することはできません。これは私が見つけたものです。

KTウォン

0
Makrokode