我正在尝试在我的网络应用程序中设置路由。
但它似乎与Ninject无关。如果我在Global.asax中评论所有Ninject,那么这条路线就像一个魅力。
在文件中使用Ninject时,我在尝试打开路径页时只得到404“无法找到资源”。
以下是我的Global.asax代码中的内容:
<%@ Application Language="C#" Inherits="Ninject.Web.NinjectHttpApplication" %>
<%@ Import Namespace="Infrastructure.Storage" %>
<%@ Import Namespace="Ninject" %>
<%@ Import Namespace="Ninject.Modules" %>
<%@ Import Namespace="System.Web.Routing" %>
<script runat="server">
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
void Application_End(object sender, EventArgs e)
{
// Code that runs on application shutdown
}
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
}
void Session_Start(object sender, EventArgs e)
{
// Code that runs when a new session is started
}
void Session_End(object sender, EventArgs e)
{
// Code that runs when a session ends.
// Note: The Session_End event is raised only when the sessionstate mode
// is set to InProc in the Web.config file. If session mode is set to StateServer
// or SQLServer, the event is not raised.
}
protected override IKernel CreateKernel()
{
IKernel kernel = new StandardKernel(new SiteModule());
return kernel;
}
public class SiteModule : NinjectModule
{
public override void Load()
{
//Bind<ILogger>().To<NLogger>().InSingletonScope();
//Bind<IAuthentication>().To<Authentication>();
Bind<ISession>().To<LinqToSqlSession>();
Bind<IReadOnlySession>().To<LinqToSqlReadOnlySession>();
//Bind<IReporting>().To<LinqToSqlReporting>();
}
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("City", "Cities/{id}", "~/test2.aspx");
}
</script>
任何人都有可能出错的想法?
答案 0 :(得分:0)
当您为您的asax使用NinjectHttpApplication类时,您需要更改applicationStart&amp;的方式。 applicationEnd被调用。
正在发生的事情是.net自动将上述方法连接到相应的事件。由于NinjectHttpApplication已经处理了Application_Start,因此不会调用您的方法,因此您的路由未注册。您需要将该方法更改为
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
RegisterRoutes(RouteTable.Routes);
}