【问题标题】:Exception when Windows Service(WCF) is starting on SOME computers?在某些计算机上启动 Windows 服务(WCF)时出现异常?
【发布时间】:2013-03-07 11:23:41
【问题描述】:

我有一个使用 net.tcp 与胖 winforms 客户端通信的 WCF 服务。使用如下所示的 install.bat 安装 Windows 服务:

@ECHO OFF

REM The following directory is for .NET 4.0
set DOTNETFX2=%SystemRoot%\Microsoft.NET\Framework\v4.0.30319
set PATH=%PATH%;%DOTNETFX2%

echo Installing IEPPAMS Win Service...
echo ---------------------------------------------------
C:\Windows\Microsoft.NET\Framework\v4.0.30319\InstallUtil "%~dp0MyApp.WindowsService.exe"
echo ---------------------------------------------------
pause
echo Done.

在某些计算机上,我需要将此 bat 保存为 ASKI 并获得对 .NET Framework 4.0 文件夹的完全权限,但除此之外,该服务通常已安装并启动没有问题。

但是在某些计算机上尝试启动服务时会收到以下消息:

MyComputer 上的 MyApp 服务启动然后停止。一些 如果服务没有被其他服务使用或 程序。

Windows 事件日志指出此异常:

服务无法启动。 System.ServiceModel.FaultException`1 [MyApp.DataContracts.FaultContracts.Generellt.GeneralFault]: (故障详细信息等于 MyApp.DataContracts.FaultContracts.Generellt.GeneralFault)。

当启动服务时,将启动 3 个 WCF 服务,它们都有自己的基地址和端口号。

我怀疑这与额外的安全环境有关?但是不知道怎么解决。

这已经在 Windows 2003 和 2008 R2 上测试过

【问题讨论】:

标签: .net windows wcf security windows-services


【解决方案1】:

在调用服务时会抛出 FaultException。如果您发布完整的例外情况,我相信我们会看到的。

当 WCF 从服务接收到 SOAP 错误消息时,会引发此类异常。看来该服务正在抛出FaultException<MyApp.DataContracts.FaultContracts.Generellt.GeneralFault>

您应该询问服务为什么这样做。 :-)

【讨论】:

    【解决方案2】:

    这里的问题是数据库中的数据有错误,并且异常处理在启动时不起作用。

    【讨论】:

      【解决方案3】:

      可能是权利问题,这可以解释可变性。在端口上设置侦听器需要对主机服务器具有“管理员”权限。您可以运行以下命令(在 CMD 提示符下)以确保 Web 服务在启动时没有任何权限问题:

      netsh http add urlacl url=http://+:8000/MyUri user=\everyone listen=yes
      

      显然,这仅用于开发和测试,不适用于生产。

      这里有解释:http://msdn.microsoft.com/en-us/library/windows/desktop/cc307223(v=vs.85).aspx

      【讨论】:

      • -1:抱歉,但是这样的配股怎么会导致FaultException 被抛出?
      猜你喜欢
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多