问题标签 [service]
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.
c# - 调用批处理文件后服务在 WaitForExit 挂起
我有一项有时会调用批处理文件的服务。批处理文件需要 5-10 秒来执行:
当我在控制台中运行相同的代码时,该文件确实存在并且代码有效。但是,当它在服务内部运行时,它会挂断在WaitForExit()
. 我必须从进程中终止批处理文件才能继续。(我确定该文件存在,因为我可以在进程列表中看到它。)
我该如何解决这个挂断问题?
更新#1:
凯文的代码让我得到输出。我的一个批处理文件仍然挂起。
"C:\EnterpriseDB\Postgres\8.3\bin\pg_dump.exe" -i -h localhost -p 5432 -U postgres -F p -a -D -v -f "c:\backupcasecocher\backupdateevent2008.sql" -t "\"public\".\"dateevent\"" "DbTest"
另一个批处理文件是:
"C:\EnterpriseDB\Postgres\8.3\bin\vacuumdb.exe" -U postgres -d DbTest
我检查了路径,postgresql
路径很好。输出目录确实存在并且仍然在服务之外工作。有任何想法吗?
更新#2:
我写了“C:\EnterpriseDB\Postgres\8.3\bin\pg_dump.exe”,而不是批处理文件的路径,proc.StartInfo.FileName
并将所有参数添加到proc.StartInfo.Arguments
. 结果没有改变,但我pg_dump.exe
在进程窗口中看到了。同样,这只发生在服务内部。
更新#3:
我已经使用管理员组中的用户运行该服务,但无济于事。我恢复null
了服务的用户名和密码
更新#4:
我创建了一个简单的服务来在事件日志中写入跟踪并执行其中包含“dir”的批处理文件。它现在会挂起proc.Start();
- 我尝试将帐户从 LocalSystem 更改为User并设置管理员用户和密码,但仍然没有。
c# - 使用 Process.Start() 从 Windows 服务中以不同用户身份启动进程
我想定期在 Windows 服务的指定用户帐户下运行任意 .NET exe。
到目前为止,我已经让我的 Windows 服务运行逻辑来决定目标进程是什么,以及何时运行它。目标进程以如下方式启动:
- Windows 服务使用“管理员”凭据启动。
- 时机成熟时,将执行一个中间 .NET 进程,其中包含详细说明应启动哪个进程的参数(文件名、用户名、域、密码)。
- 此过程创建一个新的 System.Diagnostics.Process,关联一个填充了传递给它的参数的 ProcessStartInfo 对象,然后在该过程对象上调用 Start()。
第一次发生这种情况时,目标进程执行良好,然后正常关闭。然而,每次后续的时间,一旦目标进程启动,它就会抛出错误“应用程序无法正确初始化(0xc0000142)”。重新启动 Windows 服务将允许该进程再次成功运行(第一次执行)。
自然,目标是让目标进程每次都能成功执行。
关于上面的第 2 步:要以不同的用户身份运行进程 .NET 调用 win32 函数 CreateProcessWithLogonW。此功能需要一个窗口句柄来登录指定的用户。由于 Windows 服务未在交互模式下运行,因此它没有窗口句柄。这个中间进程解决了这个问题,因为它有一个可以传递给目标进程的窗口句柄。
请不要建议使用 psexec 或 windows 任务规划器。我已经接受了我的生活,这包括以上述方式解决问题。
wcf - wcf 最大消息大小
我有两个服务,并且在它们之间发送相当大的消息(~100kb)。尽管前面提到的值是消息大小的典型值,但它可能会大幅波动(正向和负向)。
因此,为了处理我必须传输膨胀消息的这种情况,我已经在客户端和服务器端的 app.config 中设置了所有最大消息大小、最大字符串大小等属性(相关端点正确引用了绑定其中说明了尺寸)。
为了安全起见,我输入的界限完全超过了任何可能的消息大小。然而,在消息大小尺度的低端,服务间通信已被证明是可靠的,但在高端,情况并非如此——消息似乎根本没有被传递。
最奇怪的是,如果消息超过了最大大小,则会抛出异常(我已经遇到了足够多的这些,知道这一点!大声笑),但什么都没有抛出——这一切都完全无声无息地过去了。我已经尝试过各种大小的消息,并且它肯定只是随着消息大小的增长才开始发生。我可以证明目标服务没有接收到,因为在接收到后,该服务会在数据库中记录日志 - 但是对于大消息,不会生成日志。
正如我所说,我几乎可以肯定我已经增加了 app.config 中所有适用属性的大小,所以我对这种行为完全感到困惑!
关于什么可能导致这种神秘行为的任何建议?
asp.net - 如何在 ASP.NET 中返回 XML
这是一个非常基本的问题。我只是在学习 ASP.NET (C#)。我以前做过经典的 ASP 和 PHP。
对于这个项目,我手头有ASP.NET 2.0。
我有一个带有jqGrid Datagrid 的 Web 表单,我想通过 AJAX 提供 XML 数据。不过,jqGrid 不是这里的问题。“问题”是我应该采取的生成 XML 的方法。
我如何在 ASP.NET 中做到这一点?
- 我是否要创建一个新的 Web 表单来生成该数据?
- 我是否使用新的 Web 服务(它不会返回我需要的 XML,对吗?)?
- 我是否以某种方式在显示表格的现有 Web 表单中放置了一个函数?如果是这样,怎么做?
做出决定后:如何输出 XML?我不想使用 ASP.NET 的任何 XML 组件,因为它只是简单的 XML,一个记录一个接一个。使用 System.Xml 的开销太大,在此无法证明是合理的。
根据我以前使用其他脚本语言的经验,我只想打印出 XML 标记流 (Response.Write)。如果我在 ASP.NET 中这样做,我会下地狱吗?
asp.net - 向网络服务帐户授予对 ASP.NET Web 应用程序的读/写权限有什么危险?
向网络服务帐户授予对 ASP.NET Web 应用程序的读/写权限有什么危险?我必须为我的应用程序需要写入的任何目录执行此操作,例如我的 VistaDb 数据库的 App_Data 以及一些用于上传图像和更改文本文件等的随机目录。这样做有什么危险?是否可以只为网络服务的整个 Web 应用程序授予读/写权限?
windows-services - 安装 Windows 服务时,如何以编程方式使其使用特定域帐户
我有一个运行良好的 Windows 服务,但我必须让它在一个特殊的用户帐户下运行。
目前我进入服务并将登录更改为部分,但对于部署,这必须更专业地完成。
有没有办法让我以编程方式或在服务安装过程中以自定义用户帐户身份登录?
winforms - 在 Winforms 报表上过滤子报表数据
我正在使用 Winforms Reporting Services (RDLC) 生成具有子报表的报表。我的问题是子报表没有被父 ID 过滤。
数据模型的一个简单示例可能是包含员工的部门。
在报告中,我想显示所有部门并有一个子报告来显示属于该部门的员工。
我创建了一个包含两个数据表(部门和员工)的数据集。我使用 DepartmentId 列在两个表之间创建了关系。
在表格中,我使用适当的填充命令填充每个表格。我先填写Department 表,然后填写Employee 表,即Select * From Deparment 和Select * from Employee。
现在对于实际的 RDLC:Department rdlc 使用 Deparment 数据源并显示有关该部门的信息。我在这个 rdlc 上放置了一个子报表控件并设置了属性。我将 ReportProperty 传递给 Field!DepartmentId 的子报表。
在 Employee rdlc 中,我添加了 Employee 数据源并在 Property!DepartmentId 上创建了一个过滤器。
当我运行报告时,我可以循环浏览每个部门,但子报告不显示。如果我从员工数据源中删除过滤器,子报表会显示但显示所有员工。
在表单本身中,我正在处理 SubProcessing evert 并将 Employee 数据源添加到报告中。
关于如何将子报表数据链接到父级的任何想法?
.net - 从 InstallShield 2009 MSI 安装 .NET 服务时出现问题 - 自定义操作未关闭 1 MSIHANDLE
我正在使用InstallShield 2009为我继承的代码库生成MSI 。该代码由VB6和.NET 2.0代码(C# 和 C++)组成。我正在Windows XP SP2上开发和安装。
我通过从前一个团队提供的MSI逆向工程创建了InstallShield项目(称为它)。它们的配置现在相同。"MyClient.ISM"
然后我将InstallShield配置为生成MSI。这建成,没有错误。但是,当我尝试运行我的MSI时,它失败了两个
“错误 1001 InstallUtilLib.dll:未知错误”
对话框,然后成功退出它所做的更改然后我MyClient.MSI
使用 msiexec 命令运行。例如
问题似乎是由于2769 error
. 由此产生的日志文件中的错误位置如下:
此自定义操作试图安装 .NET 服务。所以我然后去了InstallShield并删除了所有自定义操作(安装、卸载、提交和回滚以及相关的 SetProperty)并再次构建和安装。这有效,但不再安装服务。我现在需要使用有效的InstallShield方法安装这些 .NET 服务。
service - 在 .NET 应用程序中接收 SMS 消息
我需要编写一个 .NET 应用程序来监听 SMS 消息,然后对其做出反应。
我假设我需要一个 SMS 网关来连接我的应用程序和 SMS 的发送者。
我怎么能实现这个。监听程序需要是网络服务还是其他?
请给我你的想法。
谢谢,查克
wcf - WCF 请求通道;真正发生了什么?
当一个人调用IRequestChannel的Open方法时会发生什么?例如,如果我有以下代码:
我似乎在某些服务上得到了“误报”,而在其他服务上却出现了准确的失败。如果这不能以某种方式验证通道是否打开,我会假设我总是会得到误报。
有什么改进建议吗?我想避免发送消息,因为这只是为了测试服务对诊断测试的可行性,但如果有必要,我可以。
我从我们的配置文件中注意到,返回误报的通道正在使用以下行为配置:
我想知道流行为配置是否导致 IRequestChannel 显示它是打开的,即使主机和服务不可用?