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] GetAllProducts() 类型 AngularWebApi.ApiControllers.ProductsBreezeController

异常类型:“System.InvalidOperationException”

4

2 回答 2

0

您需要设置您的微风webapiconfig.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 回答
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 回答