WCF 4托管在工作组计算机中时在服务中警告"System.Messaging.MessageQueueException工作组安装计算机不支持该操作". [英] WCF 4 Warning in service when hosted in a workgroup computer "System.Messaging.MessageQueueException A workgroup installation computer does not support the operation"
问题描述
我有这个服务挂在私有队列的顶部.我已经在本地计算机上测试了该解决方案,该计算机可以按预期进行所有操作(我的计算机是域的一部分).现在,当我将其托管在工作组PC上时,它会正常工作,而不会发出一条警告
在服务的跟踪文件中.我知道工作组没有公用队列,而我已经在使用专用队列.我已经搜索了Internet,并且知道它仅与在工作组环境中使用专用队列有关.这是我得到的踪迹:
I have this service which hooks on top of a private queue. I've tested the solution on my local machine which does everything as expected (My machine is part of a domain). Now when I host it on a workgroup pc it works fine apart from one warning that gets written
in the service's trace file. I know workgroup's dont' have public queues and I'm already using private queues. I've searched the internet and I know it has to do with only using private queues in a workgroup environment. Here's the trace I get:
< E2ETraceEvent xmlns =" http://schemas.microsoft.com/2004/06/E2ETraceEvent"
<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
< System xmlns =" http://schemas.microsoft.com/2004/06/windows/eventlog/system >
<System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
< EventID> 262227</EventID>
<EventID>262227</EventID>
< Type> 3</Type>
<Type>3</Type>
< SubType Name =警告"< 0lt//SubType>
<SubType Name="Warning">0</SubType>
< Level> 4</Level>
<Level>4</Level>
< TimeCreated SystemTime =" 2011-05-25T15:39:01.6641161Z" />
<TimeCreated SystemTime="2011-05-25T15:39:01.6641161Z" />
<源名称="System.ServiceModel"; />
<Source Name="System.ServiceModel" />
< Correlation ActivityID =" {00000000-0000-0000-0000-000000000000}" />
<Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
<执行ProcessName =" w3wp" ProcessID ="4888".线程ID ="6". />
<Execution ProcessName="w3wp" ProcessID="4888" ThreadID="6" />
<频道/>
<Channel />
<计算机>计算机</计算机<
<Computer>Machine</Computer>
</System>
</System>
< ApplicationData>
<ApplicationData>
< TraceData>
<TraceData>
< DataItem>
<DataItem>
< TraceRecord xmlns =" http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord "严重性=警告"
<TraceRecord xmlns="http://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Warning">
< TraceIdentifier> http://msdn.microsoft.com/zh-CN/library/System.ServiceModel.Channels.MsmqCannotReadQueues.aspx</TraceIdentifier>
<TraceIdentifier>http://msdn.microsoft.com/en-GB/library/System.ServiceModel.Channels.MsmqCannotReadQueues.aspx</TraceIdentifier>
</Description>
<Description>MsmqActivation service cannot discover queues.</Description>
< AppDomain>/LM/W3SVC/2/ROOT/Arc-2-129508115384766365</AppDomain>
<AppDomain>/LM/W3SVC/2/ROOT/Arc-2-129508115384766365</AppDomain>
< ExtendedData xmlns =" http://schemas.microsoft.com/2006/08/ServiceModel/DictionaryTraceRecord ">
<ExtendedData xmlns="http://schemas.microsoft.com/2006/08/ServiceModel/DictionaryTraceRecord">
< Host>.</Host>
<Host>.</Host>
< PublicQueues> True</PublicQueues>
<PublicQueues>True</PublicQueues>
</ExtendedData>
</ExtendedData>
< Exception>
<Exception>
< ExceptionType> System.Messaging.MessageQueueException,System.Messaging,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a</ExceptionType>
<ExceptionType>System.Messaging.MessageQueueException, System.Messaging, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</ExceptionType>
< Message>工作组安装计算机不支持该操作.</Message>
<Message>A workgroup installation computer does not support the operation.</Message>
< StackTrace>
<StackTrace>
在System.Messaging.MessageQueue.GetMachineId(字符串machineName)
at System.Messaging.MessageQueue.GetMachineId(String machineName)
在System.Messaging.MessageQueueCriteria.set_MachineName(字符串值)
at System.Messaging.MessageQueueCriteria.set_MachineName(String value)
在System.Messaging.MessageQueue.GetPublicQueuesByMachine(String machineName)
at System.Messaging.MessageQueue.GetPublicQueuesByMachine(String machineName)
在System.ServiceModel.Channels.MsmqBindingMonitor.OnTimer(对象状态)
at System.ServiceModel.Channels.MsmqBindingMonitor.OnTimer(Object state)
</StackTrace>
</StackTrace>
< ExceptionString> System.Messaging.MessageQueueException(0x80004005):工作组安装计算机不支持该操作.
<ExceptionString>System.Messaging.MessageQueueException (0x80004005): A workgroup installation computer does not support the operation.
在System.Messaging.MessageQueue.GetMachineId(String machineName)处
at System.Messaging.MessageQueue.GetMachineId(String machineName)
在System.Messaging.MessageQueueCriteria.set_MachineName(字符串值)
at System.Messaging.MessageQueueCriteria.set_MachineName(String value)
在System.Messaging.MessageQueue.GetPublicQueuesByMachine(String machineName)处
at System.Messaging.MessageQueue.GetPublicQueuesByMachine(String machineName)
位于System.ServiceModel.Channels.MsmqBindingMonitor.OnTimer(对象状态)</ExceptionString>
at System.ServiceModel.Channels.MsmqBindingMonitor.OnTimer(Object state)</ExceptionString>
</Exception>
</Exception>
</TraceRecord>
</TraceRecord>
</DataItem>
</DataItem>
</TraceData>
</TraceData>
</ApplicationData>
</ApplicationData>
</E2ETraceEvent>
</E2ETraceEvent>
我的服务端点的定义如下:
My service endpoint is defined like:
<端点
address =" net.msmq://localhost/private/Arc2/EventLogService.svc"
address="net.msmq://localhost/private/Arc2/EventLogService.svc"
binding ="netMsmqBinding"
binding="netMsmqBinding"
bindingConfiguration =" MsmqBinding"
bindingConfiguration="MsmqBinding"
contract ="Arc2Service.IEventLogService"; />
contract="Arc2Service.IEventLogService" />
< binding name =" MsmqBinding" fullyOnce ="true"持久=真"
<binding name="MsmqBinding" exactlyOnce="true" durable="true"
receiveErrorHandling =移动"; maxReceivedMessageSize ="2147483647">
receiveErrorHandling="Move" maxReceivedMessageSize="2147483647">
<安全模式=无". />
<security mode="None" />
< readerQuotas maxDepth =" 2147483647" maxStringContentLength ="2147483647"
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength ="2147483647"; maxBytesPerRead ="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount ="2147483647"; />
maxNameTableCharCount="2147483647" />
</binding>
</binding>
有什么想法吗?
推荐答案
您好,尝试使用直接格式名称:
Hello, try to use direct format names: http://msdn.microsoft.com/en-us/library/ms700996(VS.85).aspx. Most MSMQ features are not supported in workgroups unless you use direct format names.
这篇关于WCF 4托管在工作组计算机中时在服务中警告"System.Messaging.MessageQueueException工作组安装计算机不支持该操作".的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!