2

尝试:

  1. 我在VS2012中创建了一个新项目
  2. 我通过 NuGet 包RavenDB Embedded -Pre安装
  3. 我安装了Ninject.MVC3
  4. 为 ninject RavenDB 添加了一个模块:

    Public class RavenDBNinjectModule : NinjectModule
    {
        public override void Load()
        {
        Bind<IDocumentStore>().ToMethod(context =>
        {
            NonAdminHttp.EnsureCanListenToWhenInNonAdminContext(8080);
            var documentStore = new EmbeddableDocumentStore { Url="http://localhost:8080/", DataDirectory="~/App_Data", UseEmbeddedHttpServer = true };
            return documentStore.Initialize();
        }).InSingletonScope();
    
        Bind<IDocumentSession>().ToMethod(context => context.Kernel.Get<IDocumentStore>().OpenSession()).InRequestScope();
       }
    } 
    
  5. 在我的课堂“NinjectWebCommon”中......

    private static void RegisterServices(IKernel kernel)
    {
        kernel.Load(new RavenDBNinjectModule());
    } 
    

运行应用程序时,生成了以下 url (" http://localhost:1423 ")

验证文件“Raven.Studio.xap”是我的应用程序的根

我尝试访问“ http://localhost:8080 ”,但显示以下屏幕:在此处输入图像描述

我究竟做错了什么?

4

3 回答 3

0

您正在设置 Url 属性,这意味着您不是在嵌入式模式下运行,而是在服务器模式下运行。删除 Url 属性,一切都会为您工作。

于 2012-06-17T09:46:16.663 回答
0

我发现了问题!

由于他没有立即使用IDocumentSession,ninject 没有创建实例,IDocumentStore因此没有运行该Initialize方法

于 2012-06-17T11:25:06.283 回答
0

事实证明,问题是documentStore.Initialize永远不会被调用,因为没有人要求 Ninject 解决IDocumentStore

于 2012-06-17T13:31:27.390 回答