一年多以前,我在使用VS 2008编写WCF服务。这个服务运行在我编写的Windows服务下,并且一直在那里运行。不幸的是,其他项目/优先事项出现了,阻止我继续进行该项目,直到现在。
现在我想回到它。然而,这一次我想知道是否可以使用VS 2010和.NET 4,而不是.NET 3.5。我打开了命令提示符,运行SvcUtil以获取wsdl信息,然后将其放入配置文件中,为我正在尝试开始编写的新WPF应用程序做准备。唯一的问题是,我一直收到一个错误,说我无法连接服务器等。
所以,我从服务器上复制了.exe.config文件到我的机器上,我可以使用SvcConfigEditor对其进行编辑。我已经进行了更改,将其放回到服务器上,并在尝试运行SvcUtil时出现了一个错误,但更糟糕的是,我没有看到我期望看到的.svclog文件。因此,我进入了服务器的服务应用程序。我找到了一年前编写的Windows服务;看到它正在运行,然后停止并重新启动了它。
现在我有了不同的问题。我的Windows服务启动,但立即停止。我收到这条消息,说服务已经启动,然后停止,并说有时会发生这种情况,例如性能日志和警报服务。我已经检查了服务器上的事件日志,然后唯一与此Windows服务相关的事情是它进入了启动状态,然后进入了停止状态。
啊,在尝试4次启动之后,它终于在事件日志中给了我一个错误!(为什么它一开始就没有这样做呢?谁说一遍又一遍地做同样的事情,并期望有不同的结果是疯狂的表现,明显前三次它没有在事件日志中注册任何内容,但第四次却有。)
这里是错误:
事件类型:错误 事件来源:Service1 事件类别:无 事件ID:0 日期:2011年5月4日 时间:上午10:14:46 用户:N/A 计算机:HELIOS 说明: 无法启动服务。System.TypeInitializationException: 'System.ServiceModel.DiagnosticUtility'的类型初始值设定项引发异常。--->System.Configuration.ConfigurationErrorsException: 找不到类型 用于类System.Diagnostics.XmlWriterTraceListener,System,Version=4.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089。 at System.Diagnostics.TraceUtils.GetRuntimeObject(String className, Type baseType, String initializeData)
这是SvcConfigEditor放入.config文件的新代码部分:
现在我想回到它。然而,这一次我想知道是否可以使用VS 2010和.NET 4,而不是.NET 3.5。我打开了命令提示符,运行SvcUtil以获取wsdl信息,然后将其放入配置文件中,为我正在尝试开始编写的新WPF应用程序做准备。唯一的问题是,我一直收到一个错误,说我无法连接服务器等。
所以,我从服务器上复制了.exe.config文件到我的机器上,我可以使用SvcConfigEditor对其进行编辑。我已经进行了更改,将其放回到服务器上,并在尝试运行SvcUtil时出现了一个错误,但更糟糕的是,我没有看到我期望看到的.svclog文件。因此,我进入了服务器的服务应用程序。我找到了一年前编写的Windows服务;看到它正在运行,然后停止并重新启动了它。
现在我有了不同的问题。我的Windows服务启动,但立即停止。我收到这条消息,说服务已经启动,然后停止,并说有时会发生这种情况,例如性能日志和警报服务。我已经检查了服务器上的事件日志,然后唯一与此Windows服务相关的事情是它进入了启动状态,然后进入了停止状态。
啊,在尝试4次启动之后,它终于在事件日志中给了我一个错误!(为什么它一开始就没有这样做呢?谁说一遍又一遍地做同样的事情,并期望有不同的结果是疯狂的表现,明显前三次它没有在事件日志中注册任何内容,但第四次却有。)
这里是错误:
事件类型:错误 事件来源:Service1 事件类别:无 事件ID:0 日期:2011年5月4日 时间:上午10:14:46 用户:N/A 计算机:HELIOS 说明: 无法启动服务。System.TypeInitializationException: 'System.ServiceModel.DiagnosticUtility'的类型初始值设定项引发异常。--->System.Configuration.ConfigurationErrorsException: 找不到类型 用于类System.Diagnostics.XmlWriterTraceListener,System,Version=4.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089。 at System.Diagnostics.TraceUtils.GetRuntimeObject(String className, Type baseType, String initializeData)
这是SvcConfigEditor放入.config文件的新代码部分:
<sharedListeners>
<add initializeData="C:\Program Files\ASIWindowsService\ASIWindowsService_tracelog.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelTraceListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
<add initializeData="C:\Program Files\ASIWindowsService\ASIWindowsService_messages.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp">
<filter type="" />
</add>
</sharedListeners>