问题标签 [nancy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
30763 浏览

asp.net - 无法将 HttpHandler 映射到“路径/*”通配符映射

所以我一直在尝试将 http 模块映射到 MVC3 站点的子路径。据我了解,它应该很简单,但它一直没有工作。模块设置如下:

iis6 也有一个匹配部分,因此我可以在 webdev.webserver 下运行它。然而,测试部署到我的本地 iis7(在 Win7 下)和使用 webdev.webserver,只有 /api 实际调用处理程序。如果我调用 /api/{anything} 它只会返回 404。

我确定我只是“做错了(tm)”,但任何帮助将不胜感激。

注意:我还尝试了其他一些配置,包括使用标签和创建 /api 文件夹以及使用完整通配符将 web.config 添加到该文件夹​​。

0 投票
1 回答
1945 浏览

c# - 使用 Nancy 自托管 + TopShelf 的空白回复

我正在尝试在 Topshelf 服务中使用 Nancy(使用带有 Razor 视图的自托管 nuget 包)。我将它托管在http://localhost:8585/上,当我处于调试模式或直接调用我的可执行文件时它工作得很好。南希模块完美地提供了一个剃刀视图。

然后我安装应用程序:

当我启动服务时,它似乎工作得很好,并且没有错误。然后,当我在浏览器中访问http://localhost:8585/时,我得到一个空白响应。关于为什么的任何想法?

在开始使用 Topshelf 托管服务之前,我启动了 Nancy:

之后,topshelf 服务就这样配置和启动了:

我正在使用 ninject,StartService 和 StopService 方法只是打印 stopwatch.ElapsedMilliseconds 的当前值的函数。

这是我的 Nancy 模块的配置:

除了 Self Hosting & Razor 部分,我使用了 Nancy 中的所有默认设置。知道会发生什么吗?

我也尝试过netsh http add urlacl url=http://+:8585/ user=\Everyone,它似乎对行为没有任何影响。

0 投票
3 回答
4244 浏览

c# - Nancy Self Host 带有 Razor 视图的空白响应

在南希 0.6 中解决


我试图让自托管南希返回一个剃刀视图,但我无法让它工作。Nancy 源代码中的示例使用了一个 Web 项目,但他们拥有的页面并没有说这是必需的。我试过指定配置部分,但他们又说“这一步是完全可选的”(斜体是他们的)。追踪源代码,它看起来不像 razor 是一个有效的视图引擎,但我看不到可以在配置中或我自己的 NancyModule 中添加它的位置......任何帮助将不胜感激。

查看引擎

当我最终发现他们正在查看视图文件夹时,似乎 cshtml 是受支持的扩展,但 DefaultViewFactory 没有将它与视图引擎关联,所以我得到 null:

在此处输入图像描述

我的代码:

Static.cshtml 只是一个显示“Hello, world!”的 html 页面。

0 投票
3 回答
4453 浏览

asp.net - 禁用 ASP.NET HttpHandler 响应缓存

背景

我正在比较在 IIS 7 下运行的 NancyFx 和 ServiceStack.NET 的性能(在 Windows 7 主机上测试)。两者都非常快——在本地测试每个框架处理超过 10,000 多个请求/秒,ServiceStack 快约 20%。

我遇到的问题是 ASP.NET 似乎正在缓存来自 HttpHandler 的每个唯一 URI 请求的响应,迅速导致巨大的内存压力(3+ GB)和垃圾收集器过度工作(大约 25% 的时间消耗GC)。到目前为止,我一直无法禁用对象的缓存和构建,并且正在寻找有关如何禁用此行为的建议。

细节

请求循环基本如下:

响应是一个简单的 JSON 对象,格式为 { UserID: n }。

我已经破解了打开的 WinDBG,每个请求都有:

  • System.Web.FileChangeEventHandler
  • System.Web.Configuration.MapPathCacheInfos
  • System.Web.CachedPathDatas
  • System.Web.Caching.CacheDependencys
  • System.Web.Caching.CacheEntrys

显然,这些缓存项让我相信这是一个缓存膨胀问题(我很想摆脱 150,000 个不可用的对象!)。

到目前为止我尝试过的

  • 在 IIS 'HTTP Resonse Headers' 中,将 'Expire Web content' 设置为 'immediately'。
  • 在 web.config

    /li>
  • 也在 web.config 中(以及策略的许多变体,包括没有)。

    /li>
  • 查看框架的源代码,看看是否有任何内置的“功能”会使用 ASP.NET 缓存。虽然有缓存帮助器,但它们是框架本身私有的,并且似乎没有利用 ASP.NET 缓存。

更新#1

通过反射器挖掘我发现将值设置UrlMetadataSlidingExpiration为零可以消除大部分过多的内存使用,但代价是吞吐量减少了 50%(FileAuthorizationModule 类缓存 FileSecurityDescriptors,当UrlMetadataSlidingExpiration是非零)。

这是通过更新 web.config 并将以下内容放入:

如果可能,我将尝试完全禁用 FileAuthorizationModule 运行,看看是否有帮助。但是,ASP.NET 仍在生成 2*NMapPathCacheInfoCacheEntry对象,因此内存仍在消耗,只是速度要慢得多。

更新#2

问题的另一半与此处描述的问题相同:防止许多不同的 MVC URL 填充 ASP.NET Cache。环境

<cache percentagePhysicalMemoryUsedLimit="1" privateBytesPollTime="00:00:01"/> 有帮助,但即使使用这些非常激进的设置,内存使用量也会迅速上升到 2.5GB(与 4GB 相比)。理想情况下,这些对象一开始就不会被创建。如果做不到这一点,我可能会求助于使用反射来清除缓存的 hacky 解决方案(所有这些条目都是“私有的”,并且在迭代公共缓存时不会枚举)。

0 投票
1 回答
3726 浏览

c# - Nancy Self Host 不调用 Module?

我正在将 Nancy 框架添加到我的 C# 控制台应用程序中(按照这里的非常短的教程,当我转到http://localhost:1234时它会加载一个空白页面,所以我知道它正在启动,但它没有显示我的文本正确。我已经多次检查我的代码,但没有发现任何问题。

我已将 Nancy 和 Nancy.Hosting.Self 添加到我的项目中。

我添加了一些打印行,当我访问页面时它从不调用模块。有谁知道问题是什么?

0 投票
1 回答
344 浏览

c#-4.0 - Spark Model Methods crash in IF statement

I am using some methods from my viewdata model in Spark, but it doesn't work properly. I thought it was working previously, but it appears to be crashing. Am I doing something wrong that I am unaware of?

Also, can multiple classes be used from code in a Spark file, or can only the one be passed <viewdata model="namespace.class">? I see stuff on the Spark documentation like <viewdata currentProduct="Product"/> but I don't understand what that is pulling from.

0 投票
2 回答
1330 浏览

c# - 什么是 JSON 数据源?

我正在使用 Nancy 框架和 Spark 视图引擎开发一个 C# 控制台应用程序,并且我正在尝试从另一个项目中复制一些东西。但是,我对 Javascript 和 JSON 都非常缺乏经验。要从我的 HTML 调用我的 C# 代码中的聊天功能,现在我只需使用类似以下内容...

HTML:

C#代码:

问题是这会导致页面重新加载。在我正在寻找参考的项目中,他们使用 Javascript/JSON 调用相同类型的函数而无需重新加载页面。我理解除了 JSON 行之外的所有内容,因为我不明白 DataSource 是什么......

0 投票
2 回答
2767 浏览

unit-testing - 试驾南希模块

好的 - 我喜欢 NancyFx。用那几行代码编写一个 Web 应用程序真是太棒了!

但是您如何在单元级别上测试您的 NancyModules?

请注意,我知道 Nancy 提供了出色的测试框架(Nancy.Testing on NuGet),它提供了测试整个(几乎)应用程序堆栈的极好方法。但现在我的意思是我用来充实我的 NancyModule 内容的单元级测试,以 TDD 方式。

由于路由是在构造函数中定义的,通常与构成整个动作的 lamda 表达式一起定义,因此从单元测试中感觉有点“无法访问”。但是我是否错过了一些关于如何测试路线动作的明显内容?

例如,这个简单应用程序的单元测试看起来如何?

看到那里 - 现在我在测试之前编写了生产代码...... :) 关于如何开始测试有什么建议吗?

0 投票
1 回答
1233 浏览

.net - Nancy with Razor:视图被缓存,让开发变得非常困难

我是 Nancy 和 Razor(和 MVC)的新手。如果我对视图进行更改,我必须以某种方式重新启动应用程序(更改 web.config、重新启动开发服务器等)以使更改生效。

我认为缓存可能是 Razor 的静态字典?它存储每个编译视图?毫无疑问,这对生产非常有用,但我如何将其关闭以进行开发呢?我希望能够修改视图、保存、构建并查看更改。

任何建议都非常感谢。谢谢。

0 投票
2 回答
3403 浏览

javascript - 返回带有 Nancy 的 Json 文件以在 Jquery 中使用

我有一个文件,其中包含一些扩展名为 .json 的 JSON。我正在使用 Nancy 来提供文件,如下所示:

当我对这样的文件发出 jQuery ajax 请求时:

我取回了文件,但它不被识别为 JSON,我确定这是因为返回的 Content-Type 是 application/octet-stream。

如何将 Content-Type 更改为 application/json?

我试过了:

我必须将文件的内容读入字符串然后使用 Response.AsJson 还是有办法更改 Response.AsFile 返回的标题?