0

私はそよ風にとても慣れていません。AngularBreeze のテンプレートをダウンロードし、サンプル アプリケーションを作成しようとしましたが、Breeze WebApi コントローラーに行き詰まっています。

BreezeController]
public class ProductsBreezeController : ApiController
{
    private readonly ProductRepository context;

    public ProductsBreezeController()
    {
        context = new ProductRepository();
    }

    [HttpGet]
    public string Metadata()
    {
        return context.Metadata();
    }

    //// GET api/productsbreeze
    public IQueryable<Product> GetAllProducts()
    {
        return context.TodoLists;
    }
}

public class ProductRepository : EFContextProvider<SampleEntities>
{
    public DbQuery<Product> TodoLists
    {
        get { return Context.Products; }
    }
}

例外メッセージ

リクエストに一致する複数のアクションが見つかりました: タイプ AngularWebApi.ApiControllers.ProductsBreezeController の System.String Metadata() System.Linq.IQueryable`1[AngularWebApi.DataAccess.Model.Product] タイプ AngularWebApi.ApiControllers.ProductsBreezeController の GetAllProducts()

ExceptionType : "System.InvalidOperationException"

4

2 に答える 2

0

要求する URL は Breeze API 構成と一致する必要があります。

サーバー側の構成

GlobalConfiguration.Configuration.Routes.MapHttpRoute("BreezeApi", "breeze/{controller}/{action}");

クライアント側

var manager = new breeze.EntityManager("/breeze/ProductsBreeze");
于 2013-10-12T15:18:11.523 に答える
0

アクション パラメータを受け入れるように、breezewebapiconfig.cs を設定する必要があります。現在、おそらくコントローラーしかありません。

appstart フォルダーと BreezeWebApiConfig.cs を開き、そこに追加します (次のように表示されます) -

Breeze/{controller}/{action}/{id} 

そこにアクション部分を追加する必要があります

編集

あなたの質問では、そのコントローラー アクションのルートが api/productsbreeze であることを明確に示しています。それがヒットしているルートである場合は、そのルートを調整してアクションも受け入れる必要があります。ヒットしようとしているのが Breeze ルートの場合は、アクションに HttpGet コントローラー属性を追加します。

//// GET api/productsbreeze
[HttpGet]
public IQueryable<Product> GetAllProducts()
{
    return context.TodoLists;
}

もちろん、BreezeWebApiConfig が Global.asax にも登録されていることを確認する必要があります。

于 2013-10-12T13:56:00.337 に答える