问题标签 [topshelf]

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 投票
2 回答
3693 浏览

nservicebus - 在 NServiceBus 中将通用主机作为服务安装时,如何提供有效凭据?

想象一下,我在以下目录中创建了一个 .bat 文件:

\trunk\Samples\PubSub\

系统提示我输入用户名和密码,但使用我自己的凭据时出现异常,如下所示:

安装阶段发生异常。System.ComponentModel.Win32Exception: 帐户名无效或不存在,或指定帐户名的密码无效

  1. 我可以通过什么凭据来使其正常工作?

  2. 我可以将凭据配置为NServiceBus.Host.exe的命令行参数或作为“本地系统帐户”运行吗?

笔记:

到目前为止,我的研究表明(2)可能是TopShelf通过它的 IInstallationConfiguration 支持的东西

我在已经安装了 MSMQ 的 Vista 机器上执行此操作。

如果我只是将订阅者实例作为控制台应用程序运行(即像这样),则 PubSub 示例将按预期运行:

0 投票
2 回答
5161 浏览

log4net - 如何为 NServiceBus 通用主机启用日志记录

我不想让标题太长,但这个问题专门指将 NServiceBus 通用主机作为 Windows 服务运行(感谢 TopShelf),配置为作为本地系统运行(在 Vista 机器上)

上一个问题中,我解释了为什么我决定调整 PubSub 示例以作为 Windows 服务运行,以便我可以轻松地停止和启动服务,以向自己充分证明 NServiceBus 正在做它应该做的事情。

出于某种原因,我无法让 Log4Net 将任何内容记录到磁盘,所以这很可能只是 Log4Net(新手)配置问题?

下面是我进行某种跟踪的蛮力尝试——到目前为止,我得到的只是文件编写如下:

C:\logs\<-GUID->log4net.log

0 投票
3 回答
2127 浏览

debugging - 调试无法在受限帐户下运行的 Topshelf 服务

我有一个使用Topshelf编写的 Windows 服务。我正在尝试将其配置为使用具有受限权限的 Windows 帐户运行,而不是使用 LocalSystem。这也是必要的,因为我想使用集成身份验证连接到数据库。

该服务在作为 LocalSystem 运行(尽管使用包含凭据的数据库连接字符串)并以我的受限帐户(使用 runas)运行控制台应用程序时工作。

但是,当我尝试启动服务时,服务控制管理器超时等待响应:

服务未及时响应启动或控制请求。

我还在应用程序弹出事件日志中得到以下信息:

应用程序错误:异常未知软件异常 (0xc06d007e) 发生在位置 0x77e4bef7 的应用程序中。

应用程序做的第一件事是写入日志文件,但当我启动服务时它没有达到。如果我通过控制台运行,日志记录工作。

有什么建议我可能会丢失或我接下来可能会尝试什么?

0 投票
3 回答
1531 浏览

nservicebus - 为什么 NServiceBus.Host.exe 没有就地运行我的代码?

我正在构建一个 NServiceBus 服务,当我启动它时(通过 Visual Studio 调试或从命令行),NServiceBus.Host.exe 似乎正在将它运行的 DLL 重新定位到我的 AppData 文件夹。

应用程序依赖于 bin\debug 文件夹中存在的资源(例如,包含 DLL 的插件文件夹),但这些资源不会被复制到临时文件夹中。

我的环境是 Windows 7 x64,我尝试以管理员身份运行 Visual Studio 和命令提示符,但行为没有任何变化。

编辑

该行为似乎发生在 Topshelf 内。当我在端点的构造函数末尾使用断点进行调试时,它首先会在端点在 Program.cs 的 Main 方法中构造时停止;此时的环境是:

但是,当再次调用构造函数时,这次是从 GenericHost 构造函数调用,这是环境:

我还没有拉下 TopShelf 代码来调试它以查看 dll 移动的确切位置。但这肯定发生在 NServiceBus.Host.Exe 中。

0 投票
1 回答
4023 浏览

.net - 如何配置 TopShelf 以将服务作为 ServiceAccount.NetworkService 运行?

如何配置 TopShelf 以将服务作为 ServiceAccount.NetworkService 运行?

https://github.com/Topshelf/Topshelf

0 投票
1 回答
409 浏览

c# - TopShelf- ConfigureServiceInIsolation 和 ConfigureService 之间的区别

有人可以帮我理解这个顶级项目...主要是 ConfigureServiceinIsolation 和 ConfigureService 之间的区别。

http://topshelf-project.com/documentation/getting-started/

如果有人可以向我指出一些有关它的适当文档,那就太好了。

谢谢

0 投票
2 回答
1440 浏览

c# - 顶架异常

我正在使用topshelf,当我尝试使用“-i”选项作为服务安装时,我遇到了这个异常。

无法将“Magnum.CommandLineParser.SwitchElement”类型的对象转换为“Magnum.CommandLineParser.IArgumentElement”类型。

该函数出现异常

0 投票
1 回答
1643 浏览

c# - 使用 ConfigureServiceInIsolation 运行 Topshelf 服务 - 通用主机

我正在开发一个非常简单的通用主机解决方案,它将允许我们将程序集作为 Windows 服务(ala NServiceBus)托管。我遇到了以下异常(类似于 Dru博客文章中提到的评论)。我需要它来工作,这样我就可以在不同的 AppDomain 中托管服务。

“在程序集 'MyProject.WindowsServices.GenericHost, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 中键入 'MyProject.WindowsServices.GenericHost.Program+<>c__DisplayClass5' 未标记为可序列化。”

我正在使用 topshelf 主页 (topshelf-project.com) 上的下载链接提供的 Topshelf 1.0 RC 二进制文件。我已经尝试了最新的构建(29/07/2010),并且可以从谷歌代码和 github 下载构建!我不能让他们中的任何一个为我工作!

这在具有旧版本 Topshelf 的 NServiceBus 库中工作(dll 版本为 0.8.0.96)。通过对以下内容进行一些小的代码更改(使用 CreateServiceLocator 代替 HowToBuildService),它适用于这些较旧的二进制文件,但我宁愿坚持使用最新的代码以利用任何计划的修复或增强功能。

这是我的代码。

另外值得注意的是,我的 GenericHost 类和 arguments.ServiceType 标识的类都实现了 MarshalByRefObject 并且我还使这些类 Serializable 以查看是否有帮助。虽然不是这些类导致了问题,但它似乎在抱怨 C# 编译器为我配置的一个或多个 lambda 生成的匿名类型。

有其他人使用 ConfigureServiceInIsolation() 看到这个问题吗?如果没有,有人知道我在这里缺少什么吗?如果您需要更多信息,请告诉我,例如堆栈跟踪或更多代码。

0 投票
1 回答
2417 浏览

c# - VS2010 Topshelf托管应用调试

我正在尝试使用 Topshelf 托管应用程序 Topshelf.Host.exe 将我的 .NET 类库作为 Windows 服务执行。http://topshelf-project.com/documentation/shelving/

我无法在 VS2010 中连接调试器。这是我的设置

  • Topshelf.Host.exe 在说 c:\projects
  • 我的类库服务构建到 c:\projects\Services\library-name\
  • 运行 Topshelf.Host.exe 作为类库的外部应用程序进行调试

使用 F5/run Topshelf.Host.exe 正在运行,但它似乎没有拾取并加载我的类库。有什么想法或更好的方法来设置调试吗?

0 投票
1 回答
2825 浏览

c# - Topshelf 中托管的 WCF 服务需要很长时间才能关闭

我正在使用 Topshelf 将 WCF 服务作为 Windows 服务托管。即使只是在控制台上运行,在我向它发送 Ctrl-C 后,它也需要很长时间才能关闭,这在作为服务运行时会被镜像。在我的本地机器上,调用 svcHost.Close(new TimeSpan(0)) 需要 1 毫秒,但在 Topshelf 调用的 Stop 方法结束和代码退出 Runner.Host() 方法之后需要 10240 毫秒。这不是很好,但是在我尝试过的生产服务器上,第二个值是 70s。这比 Windows 在确定服务是垃圾之前提供服务的 30 秒要多得多。

这是我的 Topshelf 代码和服务代码。我已经剥离了很多以删除 Log4Net 日志记录和异常处理,因为我已经验证了没有发生异常。

超过 10 秒和超过 70 秒似乎太“默认”了,所以我搜索了高低的超时设置以尽可能低,但它们似乎都没有任何好处。这是我的 app.config 代码。

那么我该怎么做才能让 WCF 更快地关闭呢?