c# - 运行 Windows 服务时拒绝访问

标签 c# asp.net-core .net-core asp.net-core-3.1

我使用 ASP.Net Core 3.x 和 C# 创建了一个 Windows 服务。我在构建项目时使用了新的 Windows 服务模板。当我从我的开发环境或控制台窗口运行它时,它运行良好。当我将它安装为 Windows 服务并尝试启动该服务时,我得到了一个 “错误 5:访问被拒绝。”错误。

我尝试了很多我将在下面概述的方法来消除错误但似乎没有任何效果所以我下载了 Microsoft 提供的示例应用程序,网址为 sample

相同的结果...当我从 Visual Studio 中运行示例应用程序时它运行良好,当作为服务运行时我收到拒绝访问错误。

  • 我在我的本地机器上运行所有这些,我是这台机器的管理员。

  • 我最初尝试使用默认的本地系统帐户运行它;得到拒绝访问错误。 我更改了登录为我的域帐户,与我用来登录本地机器的帐户相同,它是这台机器上的管理员;得到相同的拒绝访问错误。

  • 我的帐户设置了作为服务运行的权限。

  • 事件查看器只显示一条消息“拒绝访问”,不会创建其他消息。

  • 我相信访问被拒绝错误甚至在 C# 代码执行之前就已发生。让我相信这是我在程序的最顶部添加了一行。Main.... File.WriteAllText("C:\\temp\\ws.log", $"Worker Service 测试@ {DateTime.Now}。内容根路径:{AppContext.BaseDirectory}");。我的帐户对临时文件夹具有完全访问权限。当我从 Visual Studio 运行应用程序时创建此文件,但当我将应用程序作为服务运行时它不会创建。

  • 我已经阅读了很多网站,包括这个 one还有这个one .运气不好,我在这些网站上尝试的所有操作仍然会产生拒绝访问错误。

我的想法已经用完了,希望这里有人能给我答案。谢谢!

最佳答案

我找到了解决方案,相信我,我觉得自己真的很蠢!!!

当我将它安装为服务时,我只将路径放在“binPath”中。

sc create WindowsService1 binPath="C:\temp"

一旦我将可执行文件实际添加到 binPath 参数中,一切正常。

将其更改为 sc create WindowsService1 binPath="C:\temp\WindowsService.exe" 并且成功了。

我知道这是一个 Id10t 错误,但 Microsoft 确实应该为“sc”命令提供更好的消息传递。像“找不到在 binPath 参数中指定的文件”这样的消息会很有帮助。本来可以节省我大约 6 个小时的工作时间。

感谢大家审阅和回复此问题。

关于c# - 运行 Windows 服务时拒绝访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59180558/

相关文章:

c# - 一段时间后信号 R 连接状态为 0

asp.net-core - 任务失败 : Activating language client: HtmlLanguageClient

c# - Entity Framework Core 中的条件导航属性

c# - Google.Apis.Util.Utilities.GetStringValue(System.Enum) 和 Google.Apis.Util.Utilities.GetStringValue(System.Enum) 之间的调用不明确

c# - 相互 SSL 身份验证 - sslstream 中的本地证书返回 'null' 而不是客户端上的证书

c# - mongodb 4.0 在c#(驱动版本2.7+)中启动一个事务,在事务期间,整个数据库将被锁定,如何解决?

visual-studio - 所有 .Net Core 项目显示黄色感叹号/三角形

asp.net-core - 如何创建一个按钮,当在 dotnet 核心 2) 中单击 ("Razor page"时将转到 Razor 页面

c# - 如何使用 System.Text.Json API 将流反序列化为对象

c# - 正则表达式允许字母数字,只有一个空格然后字母数字