【问题标题】:Issues binding Nancy onto a subpath of a webforms application将 Nancy 绑定到 webforms 应用程序的子路径的问题
【发布时间】:2014-05-01 09:50:27
【问题描述】:

我喜欢 Nancy 提供的东西,尤其是它促进模块重用的能力。

我正在尝试从现有的 ASP.NET Webforms 应用程序中运行一个 nancy 模块。我已经关注了官方文档 (https://github.com/NancyFx/Nancy/wiki/Hosting-Nancy-with-asp.net) 的所有变体,但我根本无法让它工作。

为了说明这一点,我在 VS2013 中创建了一个空白的 Web 表单项目,使用其中一个可用的模板,然后我尝试加入一个最小的 nancy 配置。

您可以从这里下载此解决方案:https://www.dropbox.com/s/icq78zfgi92a6xv/HelloWorldNancy.zip

根据上述文档,我已将 http 处理程序中的 nancy 应用程序重新植根到 'nancy/*' 子路径。

我添加了一个名为 HelloWorldModule 的模块,如下所示:

public class HelloWorldModule : NancyModule
{
    public HelloWorldModule()
        : base("/helloworld")
    {
        Get["/"] = _ =>
        {
            return View["index"];
        };
    }
}

我还向 /Views/HelloWorld/ 和 /Nancy/Views/HelloWorld 添加了一个基本的 index.sshtml 视图,以防它决定针对 /Nancy 根进行视图解析。

我可以运行我的项目并且现有的 ASP.NET 应用程序不受影响。

当我点击“/nancy”子路径时,我注意到 HelloWorldModule 构造函数被点击了。我找回了花哨的 nancy 404 页面。

然后,当我尝试点击“/nancy/helloworld”时,我什么也得不到,只是再次出现 404。我的调试器正在运行,但我什么也没得到。

我还尝试运行 nancy 诊断工具“/nancy/_Nancy”,但也没有用。

有没有人知道我在这里做错了什么?


更新 [2014/05/02]

我使用 Visual Studio 中的基本 Web 应用程序模板创建了一个截屏视频,说明了我执行此操作的步骤: http://www.screencast.com/t/S8yEXPC74y

在我可以执行官方文档提出的替代配置之前,截屏视频就用完了。当我使用这种配置运行时,我只是得到每个请求的空白页(500 个响应代码)。

【问题讨论】:

    标签: asp.net nancy


    【解决方案1】:

    Oki,我已经想出了如何让它工作,虽然我不完全确定这是正确/预期的行为。

    虽然我试图集成到 ASP.NET WebForms Web 应用程序中,但我决定阅读有关集成到 MVC 应用程序中的文档。在这部分文档中,当前 (2014/05/02) 声明您需要在模块的根路径中包含自定义基本路径。

    所以在我的例子中,我的模块定义从:

    public class HelloWorldModule : NancyModule
    {
        public HelloWorldModule()
            : base("/helloworld")
        {
            Get["/"] = _ => "Hello world!";
        }
    }
    

    收件人:

    public class HelloWorldModule : NancyModule
    {
        public HelloWorldModule()
            : base("/nancy/helloworld")
        {
            Get["/"] = _ => "Hello world!";
        }
    }
    

    现在,当我点击 url '/nancy/helloworld' 时,我得到了预期的响应。这并不理想,因为我编译的模块需要了解动态配置变量。由于我正在为我们的代码库构建一组可重用的 Nancy 模块,这对我来说有点问题,但现在我可以考虑解决这个问题,因为我至少知道我的解决方案需要如何配置。

    我创建了一个示例工作项目供下载:https://www.dropbox.com/s/v895gk3slnz0ggv/Bob.zip

    【讨论】:

      【解决方案2】:

      首先,您创建了一个网站,而不是一个 Web 应用程序。将所有代码放在 Web 应用程序中可以工作,但我无法让它在网站中工作。 (还有其他一些变化)

      网站应该从 Visual Studio 中删除,它们是有史以来添加的最糟糕的东西。

      其次,我删除了 web.config 条目并取消了您已注释掉的代码的注释,并将路径固定为 * 而不是 nancy/*

      tl/博士?

      1. 不要使用网站,使用网络应用程序。
      2. 修复位置

      【讨论】:

      • 我很确定我创建了一个 Web 应用程序项目,而不是一个网站。我自己不喜欢没有项目文件的网站。你没看到csproj文件吗?我添加了一个截屏视频,说明了我的确切步骤。检查我更新的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-08
      • 2011-05-10
      • 2013-07-09
      • 2012-07-23
      • 2011-11-10
      • 2016-03-05
      • 1970-01-01
      相关资源
      最近更新 更多