小编Rod*_*eek的帖子

Ninject与ASP.Net webforms和MVC

我想在一个结合ASP.Net webforms和ASP.Net MVC的项目中使用Ninject.我正在使用Ninject 2,但是当我使用来自Ninject.Web.Mvc的NinjectHttpApplication时,当我使用类似于PageBase的东西而没有创建内核时,它就会抱怨.

我在Global.asax中有以下内容,我不确定要添加什么.

public class MvcApplication : Ninject.Web.Mvc.NinjectHttpApplication
{
    protected override void OnApplicationStarted()
    {
        AreaRegistration.RegisterAllAreas();
        RegisterRoutes(RouteTable.Routes);
        RegisterAllControllersIn(Assembly.GetExecutingAssembly());
    }

    protected override Ninject.IKernel CreateKernel()
    {
        return new StandardKernel(new ServiceModule());
    }
}
Run Code Online (Sandbox Code Playgroud)

有人在某个地方工作,可以分享一些想法或代码吗?

asp.net asp.net-mvc webforms ninject

7
推荐指数
1
解决办法
1951
查看次数

ASP.Net Web API架构选择

以下是情况的示意图:

WEBSERVER <----> MIDDLEWARE SERVER <---->数据库

  • Webserver:IIS/ASP.net 4.0(WebForms和MVC)
  • 中间件服务器:WCF服务
  • 数据库服务器:Oracle

Web服务器与Oracle数据库实际分离.

我们想要做的是在Web应用程序的前端使用ASP.Net Web API,使用JQuery/KnockoutJS在新的单页应用程序中集成数据的快速绑定.因此,我们需要从数据库中的数据中使用JSON API来使用JQuery进行访问.

我们想用PetaPoco与数据库交谈.

但是,WEB API项目必须在中间件服务器上运行才能从数据库中获取数据.但是当然我们永远不能在前端使用JQuery访问WEB API.

我正在考虑在Web服务器上设置一个WEB API,它使用不同的技术连接到中间件服务器,可能就像我们现在做的那样普通的旧WCF.然而,这似乎是一种矫枉过正.

有人对如何改进这种架构有一些见解吗?我确定有人在类似的环境中使用WEB API设置了SPA应用程序.

architecture petapoco asp.net-web-api knockout.js single-page-application

4
推荐指数
1
解决办法
1586
查看次数

Web Api $extend IQueryable with filter

我有一个设置,其中我获得了一个 WebApi OData 服务,该服务返回:Customers。返回客户的代码是:

public IHttpActionResult GetCustomers(ODataQueryOptions<Customer> queryOptions)
{
    return Ok(context.Customers.Where(i => i.IsActive).AsQueryable());
}
Run Code Online (Sandbox Code Playgroud)

因此,GetCustomers 方法返回所有活动客户的 IQerable 结果。出于历史目的,我们将所有客户保留在数据库中,但是当删除客户时,我们将 IsActive 字段设置为 false。

OData 设置是使用简单的 builder.EntitySet 创建的,用于为实体构建 Url。

EntitySetConfiguration<Customer> customers = builder.EntitySet<Customer>("customers");
Run Code Online (Sandbox Code Playgroud)

这完美无缺。我有一个 Angular 前端,它使用 $http 调用来接收客户等。

但是,客户可以在数据库中包含相关联系人。为了在 Angular 前端获取联系人,我使用了 OData 的 $extend 功能:

odata/customers?$expand=contacts
Run Code Online (Sandbox Code Playgroud)

这也很好用。我收到了所有相关联系人的客户。但是,正如您所猜想的那样,我只想接收应返回具有 IsActive 的联系人。IQueryable 功能将所有结果返回给我。

我知道我可以使用单独的 Odata 调用来获取联系人,但我真的很想使用 $expand 功能在一次调用中获取所有数据。我知道我也可以在客户端进行过滤(使用:$filter)。但我想在 WebApi 部分正确设置它,因此客户端不必关心过滤非活动结果。

我似乎无法弄清楚如何正确实现这一目标。有人可以帮助我走上正轨吗?

c# entity-framework odata asp.net-web-api angularjs

3
推荐指数
1
解决办法
1231
查看次数