问题
In trying to deploy a service I have found that it won't start because MSMQ is in workgroup mode. I have created a private queue instead and changed the config files to refer to it, but the WCF service host refuses to start with this message:
Binding validation failed because the binding's MsmqAuthenticationMode property is set to WindowsDomain but MSMQ is installed with Active Directory integration disabled.
Can anyone tell me how to specify workgroup mode in the config file? The information I find in MSDN is all about modifying the setting in code, and makes no mention of how to specify this in the config file.
In the config file that I have, the bindings tag is empty (<bindings />
) yet the service endpoint specifies binding="netMsmqBinding"
which I imagine means a default configuration is in use.
回答1:
You should set anonymous integration authentication on the queue. Look at this kb on why and how.
In the msdn there is a good example of working with workgroup mode. Note that the example use transactional queue. So you will have to make your queue transactional. This can be done only when creating the queue.
Post your code and config so we can comment on them.
回答2:
When we faced the issue
<security mode="None">
worked in the test environment.
During final delivery , even that didn't work.. Finally this one worked
<security>
<transport
msmqAuthenticationMode="None"
msmqProtectionLevel="None"/>
</security>
来源:https://stackoverflow.com/questions/459815/config-for-wcf-msmq-in-workgroup-mode