1

これはbreeze.jsを使用する最初の試みであるため、おそらく何かが正しく設定されていませんが、それが何であるかはわかりません。

単純なクエリを実行するとエラーが発生します。VS2012プロジェクトで最初にEF5.0DBを使用しています。

エラーが発生しました。値をnullにすることはできません。パラメータ名:source System.ArgumentNullException at System.Linq.Queryable.Where [TSource](IQueryable 1 source, Expression1 predicate)at lambda_method(Closure、IQueryable)at Breeze.WebApi.ODataActionFilter.OnActionExecuted(HttpActionExecutedContext actionExecutedContext)at System.Web.Http.Filters .ActionFilterAttribute.CallOnActionExecuted(HttpActionContext actionContext、HttpResponseMessage response、Exception exception)atSystem.Web.Http.Filters.ActionFilterAttribute。<>c_ DisplayClass2.b _0(HttpResponseMessage response)atSystem.Threading.Tasks.TaskHelpersExtensions。<>c__DisplayClass412.<Then>b__40(Task1 t)at System.Threading.Tasks.TaskHelpersExtensions.ThenImpl [TTask、TOuterResult](TTask task、Func`2 continuation、CancellationToken cancelToken、Boolean runSynchronously)

間違ったことを特定するために、breezeサーバーのソースコードをダウンロードし、プロジェクトをソリューションに含めて、エラーを追跡できるようにしました。エラーは、ODataActionFilter.csのOnActionExecutedイベントで発生しています。奇妙なことに、同じクエリに対して関数が2回呼び出されます。この関数は、最初にresponseObjectのクエリで呼び出されます。2回目にイベントが呼び出されると、クエリの結果はresponseObjectにあります。これは、エラーの原因となるiQueryableオブジェクトではなくなりました。すでに正しい結果が得られているのに、なぜ関数が2回呼び出されているのかわかりません。

誰かがこれを以前に見たことがあり、それを修正する方向に私を向けることができますか?

ありがとう

4

1 に答える 1

1

私は自分の質問に答えています。

解決策は、API コントローラーに新しい BreezeController 属性が適用されていなかったことです。これはどのドキュメントにもありません。しかし、私はサンプルでそれを見つけました。

つまり、ドキュメントから: http://www.breezejs.com/documentation/web-api-controller

[JsonFormatter, ODataActionFilter]
public class TodosController : ApiController {

ただし、現在のサンプルには次のものがあります。

[BreezeController]
public class TodosController : ApiController {

これで問題は解決しましたが、見つけるのが困難でした。また、新しい BreezeController 属性を元の 2 つの属性に追加する必要があるのか​​、それともそれらを完全に置き換える必要があるのか​​ も完全にはわかりません。

于 2012-12-30T21:29:56.197 に答える