- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试在 Topshelf 服务中使用 Nancy(将自托管与 Razor View nuget 包结合使用)。我在 http://localhost:8585/ 上托管它,当我处于 Debug模式或直接调用我的可执行文件时,它工作得很好。 Nancy 模块提供了完美的 Razor View 。
然后我安装应用程序:
myapp.exe install
当我启动该服务时,它似乎工作正常,没有任何错误。然后,当我去 http://localhost:8585/在浏览器中,我得到一个空白的响应。关于原因有什么想法吗?
在我开始使用 Topshelf 托管服务之前,我启动了 Nancy:
_nancyHost = new NancyHost(_baseUri);
_nancyHost.Start();
之后,topshelf服务就这样配置和启动了:
using (Container)
{
var host = HostFactory.New(config =>
{
config.EnableDashboard();
config.AfterStartingServices(() => Console.WriteLine("Done starting..."));
config.Service<EventHandlerService>(s =>
{
s.SetServiceName("EventHandlerService");
s.ConstructUsing(c => Container.Get<EventHandlerService>());
s.WhenStarted(n => StartService(n, stopwatch));
s.WhenStopped(n => StopService(n, stopwatch));
});
config.RunAsLocalSystem();
config.SetDescription("A service for processing events.");
config.SetDisplayName("EventHandlerService");
config.SetInstanceName("EventHandlerService");
config.SetServiceName("EventHandlerService");
});
host.Run();
}
我正在使用 ninject,StartService 和 StopService 方法只是打印 stopwatch.ElapsedMilliseconds 当前值的函数。
这是我的 Nancy 模块的配置:
Get["/"] = parameters =>
{
var indexViewModel = new IndexViewModel { CurrentDateTime = DateTime.Now, WorkLog = _service.WorkLog };
return View["index", indexViewModel];
};
Get["/js/{file}"] = p =>
{
return Response.AsJs("scripts/" + p.file as String);
};
Get["/style/{file}"] = p =>
{
return Response.AsCss("content/themes/base/" + p.file as String);
};
Get["/img/{file}"] = p =>
{
return Response.AsImage("content/themes/base/images/" + p.file as String);
};
除了自托管和 Razor 部分,我使用 Nancy 中的所有默认设置。知道会发生什么吗?
我还尝试了 netsh http add urlacl url=http://+:8585/user=\Everyone
,它似乎对行为没有任何影响。
最佳答案
我猜这是一个根路径问题,所以它找不到您的 View (假设正在复制 View )。我不知道 TopShelf 是如何工作的——它是否将工作目录设置为它正在启动的应用程序的目录?默认情况下,根路径将设置为“Environment.CurrentDirectory”,这可能正确也可能不正确。
如果使用 CurrentDirectory 不可行,那么您可以切换到嵌入式 View (有关如何在主要解决方案中执行此操作的示例),或者将 IRootPathProvider 的实现添加到您的项目并返回程序集位置(它将自动选择你的默认版本)
关于c# - 使用 Nancy self host + TopShelf 的空白回复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6469163/
我希望通过 2 个或更多路由模式执行相同的操作。 例如: //Route 1: Get["/{category}/{product_name}/{id}"] // Route 2: Get["/api
我正在开发一个使用 WPF 应用程序中托管的 Nancy 的小项目。我希望能够远程下载 ~8MB 的 PDF 文件。我能够让下载工作,但在下载过程中,应用程序不会响应任何其他请求。有没有一种方法可以允
我正在使用 Nancy 通过 Web 服务实现 API。 我想要一个/help 或/docs 页面以编程方式列出所有可用路由,以便我可以为 API 用户提供自动生成/更新的文档。 关于如何做到这一点的
有没有办法为 Nancy 服务自动生成 Swagger 文档(或类似文档)? 我找到了Nancy.Swagger ,但是没有关于如何使用它的信息,并且演示应用程序似乎没有演示生成文档(如果有,它并不明
我看过这个帖子:Nancy: how do I capture all requests irrespective of verb or path并关注了 github 文章。 但它不起作用。我只是在
我在 Nancy 中提供静态内容(例如 JavaScript)时遇到问题。 例如使用 self hosting sample我在 Views 文件夹中添加了一个 test.js 并添加了一个 标记到
我是 Nancy 的新手,我想返回自定义 HttpStatusCode 和正文(内容)。如果我返回 HttpStatusCode,它会返回一个空白正文。如果我返回一个字符串,那么它会返回该字符串作为正
我正在创建一个 Nancy 模块,该模块最终将托管在 Windows 服务内。我目前正在 WPF 测试应用程序中运行它。要启动 Nancy 托管,我使用 Nancy.Hosting.Self 并调用:
我不知道如何使用 Super Simple View Engine 预选下拉菜单。 我的模型有一个属性datatype,它是一个数字,我想在下拉列表中预先选择它。 正如我从文档中看到的那样,条件语句仅
我想在每个请求中做一些事情,无论是模块还是路由。我如何在 Nancy 2.x 中完成此操作? 如果找到How to Intercept all Nancy requests和 How do I cap
得知 Nancy 有自己的 razor 实现时,我有点吃惊,它的行为可能像也可能不像 razor。在实践中,这会导致问题吗?什么是“大多数人”用于 Nancy View 引擎的?为什么没有使用真正的
在使用 Nancy FX 时,我遇到了以下异常,该异常是在尝试启动 Web 服务时引发的:AutomaticUrlReservationCreationFailureException 更详细地研究后
我正在尝试运行一个自托管的 Nancy 应用程序,但我无法让它返回有效响应。我是南希的新人;我希望我的问题是相当简单的。 这是一些代码: class Program { static void
我想要在初始匹配后匹配/捕获所有 url 段的 nancy 规则。 例如,我想这样做: 有一个网址,如:/views/viewname/pageid/visitid/someother 和这样的规则:
我们通过 NuGet 将 Nancy 从 v1.2.0 更新到 1.3.0。根据changelog似乎没有与我们的应用程序相关的重大更改。但是我们现在收到运行时错误 Method not found:
我在工作中使用 topShelf (Windows 7) 编写了一个 Nancy 自托管服务,它工作得很好。我把它带回家并在 Windows 10 下运行它,但出现以下错误: Nancy 自身主机无法
我已经阅读了很多 Jabbr代码来学习 Nancy 并尝试在我自己的应用程序中实现许多相同的模式。我似乎无法开始工作的一件事是应用程序启动类的概念。 Jabbr 代码库有一个 App_Start带有
我需要重定向到当前模块下的路径: modulePath = "/test"; Get["/there"] = ... Get["/here"] = routeParams => { return
我已经设置了一个 Nancy bootstrap 来从非默认目录路径(它是自托管的 Nancy)提供静态内容。 奇怪的是,以下内容适用于自定义 View 位置约定,但不适用于 js 或 css 静态内
我正在拼凑一个基于 Nancy.Demo.Authentication.Forms 的演示应用程序. 我正在实现 Claims和 UserName在我的UserIdentity:IUserIdenti
我是一名优秀的程序员,十分优秀!