我想在一个结合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)
有人在某个地方工作,可以分享一些想法或代码吗?
以下是情况的示意图:
WEBSERVER <----> MIDDLEWARE SERVER <---->数据库
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
我有一个设置,其中我获得了一个 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 部分正确设置它,因此客户端不必关心过滤非活动结果。
我似乎无法弄清楚如何正确实现这一目标。有人可以帮助我走上正轨吗?
angularjs ×1
architecture ×1
asp.net ×1
asp.net-mvc ×1
c# ×1
knockout.js ×1
ninject ×1
odata ×1
petapoco ×1
webforms ×1