基本的な Breeze サンプルを DotNetNuke モジュールに含めようとしています (スタンドアロンの WebAPI プロジェクトでは正常に動作します)。簡単にするために、クライアントを削除し、Chrome ブラウザーで行った URL JSON 呼び出しのみを参照します。
メタデータとアイテムの完全なリストを見ることができ ます 。 /そよ風/あえて/トドス
ただし、URL からリストをフィルタリングしようとすると、常に完全なリストが返されます 。
MapHTTRoute を宣言した方法と関係があると思います。問題は、DotNetNuke モジュールに Global.ascx がないことです。BreezeWebApiconfig.cs ファイルを App_Start フォルダーにコピーしました。これはデバッグ時に起動しますが、DotNetNuke はルートを登録するメカニズムを使用します。
using DotNetNuke.Web.Api;
namespace SmartThinker.Modules.Framework
{
public class RouteMapper : IServiceRouteMapper
{
public void RegisterRoutes(IMapRoute mapRouteManager)
{
mapRouteManager.MapHttpRoute("framework", "BreezeApi", "breeze/{controller}/{action}", new[] { "SmartThinker.Modules.Framework.Controllers" });
}
}
}
http://www.breezejs.com/documentation/web-api-controller#note01とhttp://www.breezejs.com/documentation/web-api-routingを読みましたが、やるべきことのようですDNN がルートを登録する方法を使用します。BreezeWebApiConfig.csを使用せずにこれを行う方法はありますか?
私のコントローラー コードには BreezeController 属性があります。(サンプル クライアントをそれに接続すると、アイテムのリストが取得されます。フィルター処理が行われないだけなので、OData アクション フィルターに関係していると思います。問題がどこにあるかをデバッグするにはどうすればよいですか?
更新 1) メタデータは次のとおりです: http://www.ftter.com/desktopmodules/framework/api/dare/metadata
GetUsers メソッド: http://www.ftter.com/desktopmodules/framework/api/dare/getusers
および UserID でフィルタリングしようとする GetUsers メソッド (これは機能しません。これが問題です) http://www.ftter.com/desktopmodules/framework/api/dare/getusers?=UserID%20eq%204 http:/ /www.ftter.com/desktopmodules/framework/api/dare/GetUsersWithoutCors?=UserID%20eq%204 (これは IQueryable を返します)
コントローラーは次のとおりです。
[BreezeController]
public class DareController : DnnApiController
{
private readonly EFContextProvider<FrameworkContext> contextProvider = new EFContextProvider<FrameworkContext>();
[AllowAnonymous]
[HttpGet]
public HttpResponseMessage Metadata()
{
var response = Request.CreateResponse(HttpStatusCode.OK, contextProvider.Metadata());
return GetResponseWithCorsHeader(response);
}
[AllowAnonymous]
[HttpGet]
public HttpResponseMessage GetUsers()
{
var userInfoController = new UserInfoController();
var response = Request.CreateResponse(HttpStatusCode.OK, userInfoController.GetUsers());
return GetResponseWithCorsHeader(response);
}
[AllowAnonymous]
[HttpGet]
public IQueryable<User> GetUsersWithoutCors()
{
return contextProvider.Context.Users;
}
}