0

我在 Windows Server 2003 上有一个应用程序,并将其安装在 C# 中。我将应用程序安装在服务器 2008 上,但安装时出错:我尝试安装它

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandle& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean fillCache)
at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) at System.Configuration.Install.AssemblyInstaller.InitializeFromAssembly()
The inner exception System.ArgumentException was thrown with the following error message: Service name contains invalid characters, is empty, or is too long (max length = 80).. at System.ServiceProcess.ServiceInstaller.set_ServiceName(String value)

问题是我不明白它是如何工作的。

4

2 回答 2

1

服务名称包含无效字符、为空或太长(最大长度 = 80)

说明了一切,不是吗?这完全取决于您正在安装什么以及如何安装它。如果安装程序尝试从某处创建具有给定名称的服务,请确保安装程序可以读取“某处”。

正如这里所说:

ServInstall.ServiceName = ConfigurationManager.AppSettings["ServiceName"];

这给我带来了同样的问题。也许安装程序无法读取 app.config?

于 2012-05-17T12:32:54.533 回答
0

引发内部异常 System.ArgumentException 并显示以下错误消息:服务名称包含无效字符、为空或太长(最大长度 = 80).. 在 System.ServiceProcess.ServiceInstaller.set_ServiceName(String value)

查看服务名称是否有效,并检查您是否具有通过您的应用程序创建服务的正确权限。

于 2012-05-17T12:33:49.347 回答