【问题标题】:Adding credentials for tokenprovider in web.config在 web.config 中为 tokenprovider 添加凭据
【发布时间】:2013-02-06 10:46:40
【问题描述】:

编辑:更多细节:

关于我的问题的更多信息:

我使用服务总线将异步事件发送到 WCF 服务。我有一个这样配置的客户:

<client>
  <endpoint address="sb://[Server].[Domain]/NameSpace/eventqueue"
    behaviorConfiguration="securityBehavior" binding="netMessagingBinding"
    bindingConfiguration="messagingBinding" contract="xxx.IEventQueueService"
    name="Subscriber" />
</client>

请注意,它是我们自己域中的虚拟服务器。

这是行为和绑定配置:

<behavior name="securityBehavior">
          <transportClientEndpointBehavior>
            <tokenProvider>
              <windowsAuthentication>
                <stsUris>
                  <stsUri value="https://[Server].[Domain]:9355/[Namespace]" />
                </stsUris>
              </windowsAuthentication>
            </tokenProvider>
          </transportClientEndpointBehavior>
        </behavior>

      <netMessagingBinding>
        <binding name="messagingBinding" closeTimeout="00:03:00" openTimeout="00:03:00" receiveTimeout="00:03:00" sendTimeout="00:03:00" sessionIdleTimeout="00:01:00" prefetchCount="-1">
          <transportSettings batchFlushInterval="00:00:01" />
        </binding>
      </netMessagingBinding>

我的 WCF 服务使用相同的配置:

<services>
  <service name="xxx.EventQueueService">
    <endpoint address="sb://[SERVER].[DOMAIN]/Namespace/eventqueue"
      behaviorConfiguration="securityBehavior" binding="netMessagingBinding"
      bindingConfiguration="messagingBinding" name="EventQueueClientService"
      contract="xxx.IEventQueueService" />
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8732/xxx.ExternalServices/EventQueueService" />
      </baseAddresses>
    </host>
  </service>

</services>

如果我在我的开发计算机上运行我的项目,这将非常有用。但是现在,我想将它部署到服务器上,就像我的服务总线一样。那失败了……

旧版编辑:好的,我找到了这个网页:http://msdn.microsoft.com/en-us/library/microsoft.servicebus.configuration.windowselement.aspx

但这两个选项不起作用:

<windowsAuthentication userName="xxx" password="xxx" domain="xxx">

System.ArgumentNullException: Value cannot be null.
Parameter name: s
   at System.Convert.FromBase64String(String s)
   at Microsoft.ServiceBus.SharedSecretTokenProvider.DecodeSecret(String issuerSecret)
   at Microsoft.ServiceBus.Description.SharedSecretCredential.CreateTokenProvider()
   at Microsoft.ServiceBus.Description.TransportClientCredentialBase.get_TokenProvider()
   at Microsoft.ServiceBus.TransportClientEndpointBehavior.get_TokenProvider()
   at Microsoft.ServiceBus.Messaging.NetMessagingTransportBindingElement.CreateMessagingFactorySettings(BindingContext context)
   at Microsoft.ServiceBus.Messaging.Channels.ServiceBusChannelListener`1..ctor(BindingContext context, NetMessagingTransportBindingElement transport)
   at Microsoft.ServiceBus.Messaging.NetMessagingTransportBindingElement.BuildChannelListener[TChannel](BindingContext context)
   at System.ServiceModel.Channels.Binding.BuildChannelListener[TChannel](Uri listenUriBaseAddress, String listenUriRelativeAddress, ListenUriMode listenUriMode, BindingParameterCollection parameters)
   at System.ServiceModel.Description.DispatcherBuilder.MaybeCreateListener(Boolean actuallyCreate, Type[] supportedChannels, Binding binding, BindingParameterCollection parameters, Uri listenUriBaseAddress, String listenUriRelativeAddress, ListenUriMode listenUriMode, ServiceThrottle throttle, IChannelListener& result, Boolean supportContextSession)
   at System.ServiceModel.Description.DispatcherBuilder.BuildChannelListener(StuffPerListenUriInfo stuff, ServiceHostBase serviceHost, Uri listenUri, ListenUriMode listenUriMode, Boolean supportContextSession, IChannelListener& result)
   at System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description, ServiceHostBase serviceHost)
   at System.ServiceModel.ServiceHostBase.InitializeRuntime()
   at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at Microsoft.Tools.SvcHost.ServiceHostHelper.OpenService(ServiceInfo info)

<windowsAuthentication>

<userName value="xxx">

=> 属性“userName”不是 ConfigurationElement

【问题讨论】:

  • 您在 Web 应用程序中使用的是哪个版本的 servicebus dll?
  • 1.8.0.0,来自 NuGet。 (Windows Server 服务总线 1.0)

标签: wcf wcf-binding servicebus


【解决方案1】:

找到了解决这个问题的办法。

在部署您的应用程序时,请确保 IISPool 的所有者(或被模拟的用户)也是服务总线命名空间的 ManagedUsers 的成员。您可以使用 Get-SBNamespace -Name 进行检查。

将用户添加到命名空间:Set-SBNamespace -Name -ManageUsers

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多