Tag: 服务

你如何从Web服务中捕获抛出的SOAPexception?

我成功地在我的Web服务中抛出了一些soapexception。 我想捕获exception并访问被exception调用的字符串和ClientFaultCode。 以下是我在Web服务中的一个例外情况的示例: throw new SoapException(“You lose the game.”, SoapException.ClientFaultCode); 在我的客户端,我尝试从可能引发exception的Web服务运行该方法,并且我抓住了它。 问题是我的catch块没有做任何事情。 看这个例子: try { service.StartGame(); } catch { // missing code goes here } 如何访问使用抛出exception调用的字符串和ClientFaultCode?

为什么我的C#没有System.ServiceProcess库?

这是代码。 我只是想测试System.ServiceProcess库的库。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.ServiceProcess; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine(“hi”); var srv = new ServiceController(“MyService”); Console.WriteLine(“MyService Status {0}”, srv.Status); if (srv.Status != ServiceControllerStatus.Running) srv.Start(); System.Threading.Thread.Sleep(1000000); } } } 但是,当我运行C#代码时,它说: 错误1命名空间“System”中不存在类型或命名空间名称“ServiceProcess”(您是否缺少程序集引用?) 什么地方出了错?

从.NET服务作为其他用户启动.NET应用程序时的权限问题?

我正在尝试在与.NET服务不同的用户下启动.NET应用程序。 我们的想法是在Windows中创建一个沙盒托管应用程序。 在服务中,我以编程方式在Windows中创建用户,为该用户创建文件夹,并将主机.exe从服务器下载到该文件夹​​中。 然后我使用System.Diagnostics.Process运行主机.exe。 这是该过程的StartInfo: _process = new Process { StartInfo = { Arguments = ” -debug”, FileName = instanceDirectory + “host.exe”, WorkingDirectory = instanceDirectory, UseShellExecute = false, RedirectStandardError = true, RedirectStandardOutput = true, RedirectStandardInput = true, UserName = Helpers.GetUserNameForInstance(_hostid), Password = _hostpass, Domain = “” }, EnableRaisingEvents = true }; 当我将服务作为SERVICE运行时,进程立即崩溃,错误代码为-1073741502。 但是当我在Windows服务中指定的同一个用户运行服务但在控制台中以交互方式运行时,一切正常。 只有在将服务作为SERVICE运行而不是直接在控制台中运行时才会发生这种情况。 任何帮助将非常感激。 […]

为什么我的.NET服务在XP启动时开始变慢

我有一个.NET Windows服务,它充当某些wcf的主机。 在OnStart方法中,创建并启动服务主机。 该服务配置为自动启动。 这在Windows 7(32位和64位)上运行良好,它可以在Windows XP Pro SP3上使用“net start”启动。 使用“net start”命令启动服务大约需要20秒。 但是当Windows XP Pro SP3启动时,事件日志中会出现超时消息。 虽然服务依赖,但服务本身并不会失败。 这个问题可以在各种XP机器上重现。 核心数和内存没有影响。 更新是最新的。 现在它变得好奇了:我分析了跟踪并发现该服务大约需要60秒才能启动。 因此我添加了对ReqestAdditionalTime(480000)的调用。 但现在该服务需要略多于480秒。 关系很明显。 以下代码部分消耗时间: var asyncResults = new List(); foreach (var host in myHosts) asyncResults.Add(host.BeginOpen(null, host)); // wait until finished while (asyncResults.Count != 0) { IAsyncResult ar = asyncResults[0]; if (!ar.IsCompleted) ar.AsyncWaitHandle.WaitOne(1000); if (ar.IsCompleted) […]

如何使用c#运行批处理文件作为管理员来安装Windows服务

我创建了一个批处理文件,用于将我的程序安装为Windows服务。 批处理文件的内容: > C:\Project\Test\InstallUtil.exe > “C:\Project\Test\ROServerService\Server\bin\Debug\myservices.exe” 目前,用户需要右键单击批处理文件并“以管理员身份运行”才能成功。 我们如何避免“以管理员身份运行”? 我的意思是我们可以在批处理文件中使用某些命令告诉Windows以管理员身份运行此批处理文件吗?

如何在Windows服务之间进行通信

我有2个使用C#创建的Windows服务。 我想在第二个Windows服务中调用一个函数的服务之一。 我该怎么办? 编辑: 问题是我必须运行应用程序(我不需要它们而不是服务进程也很好)但我需要这个2应用程序进行通信,这2个应用程序在同一台服务器上,

C#.NET Web服务并返回具有子对象列表的对象列表

我正在构建一个Web服务来传回一个(艺术家)对象列表。 在艺术家对象内部有一个(专辑)对象列表。 在Album对象中有一个歌曲列表。 所以基本上我正在建立一个大的父母音乐树。 我的问题是,如何使用SOAP传递此信息? 什么是最好的使用方法。 现在我得到的只是 string string string 它在专辑中分解,但它显示了我存储的两张专辑。 任何建议,将不胜感激!

WCF不能用于通信,因为它处于Faulted状态

当我尝试使用Web服务时,我得到以下exception。 我的主要问题是这个例外何时发生? 在服务器或客户端? 错误在哪里? 服务器是否针对各种故障抛出此信息? 我自己做了一些看似有效的改动 它现在实际上有效。 我删除了使用并在服务客户端上添加了som清理。 if (Service != null && Service.State != CommunicationState.Faulted) { success = true; Service.Close(); } } catch (Exception ex) { msg = “Error” + Environment.NewLine + ex.Message + Environment.NewLine + ex.StackTrace; } finally{ if (!success) { if (Service != null) Service.Abort(); } } 这是例外: The communication object, System.ServiceModel.Channels.ServiceChannel, […]

最好使用Windows服务重复程序调用

我正在构建我的第一个Windows服务。 它是一个连接到邮箱并下载所有邮件并将其存储在本地驱动器上的组件。 我的问题是这些。 在c#windows服务中重复程序调用的最佳方法是什么。 我想用一个简单的计时器? 我在哪里开始和停止计时器? 它是在服务本身还是我的服务运行的程序? Windows服务中应包含哪些代码以用于以下function protected override void OnStart(string[] args) { //timer? // MyProgram mp = new MyProgram(); } 我应该只使用上面的新实例启动我的应用程序,还是应该包含更多内容? 正如我所说,这是我第一次使用Windows服务。 编辑: 感谢所有的答案。 当然有很多不同的方法可以做到这一点,但我发现对我来说最好的方法是作为解决方案的一个标记。 谢谢你的帮助!

如何在WCF Rest Service中传递多个参数?

我正在用C#开发WCF REST服务。 它适用于单个参数。 现在我需要扩展它以支持多个参数。 请帮我解决这个问题。 提前致谢… 在界面中使用以下声明: [OperationContract] [WebInvoke(Method = “POST”, ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.WrappedRequest, UriTemplate = “login”)] resLogin Login(reqLogin rData, int floorId);