- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 BizTalk WCF 自定义接收位置,我已向其中添加了自定义行为:
public class SasTokenProviderEndpointBehavior : BehaviorExtensionElement, IEndpointBehavior
{
public void AddBindingParameters(ServiceEndpoint endpoint, BindingParameterCollection bindingParameters)
{
var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(sharedAccessSecretName, sharedAccessKey);
bindingParameters.Add(new TransportClientEndpointBehavior { TokenProvider = tokenProvider });
}
}
}
The adapter "WCF-Custom" raised an error message. Details "System.UnauthorizedAccessException: 40102: Missing authorization token, Resource:sb://[namespace].servicebus.windows.net/[queue]. TrackingId:452c2534-d3e6-400f-874f-09be324e9e11_G27, SystemTracker:[namespace].servicebus.windows.net:[queue], Timestamp:12/1/2016 11:38:56 AM ---> System.ServiceModel.FaultException: 40102: Missing authorization token, Resource:sb://[namespace].servicebus.windows.net/[queue]. TrackingId:452c2534-d3e6-400f-874f-09be324e9e11_G27, SystemTracker:[namespace].servicebus.windows.net:[queue], Timestamp:12/1/2016 11:38:56 AM
<Authorization xmlns="http://schemas.microsoft.com/servicebus/2010/08/protocol/">SharedAccessSignature sr=[really long encoded string]</Authorization>
而我的自定义绑定(bind)端口的消息没有。所以问题确实是缺少授权 SOAP header ;但问题仍然存在 - 为什么 channel 不添加此 header ?
Microsoft.ServiceBus.Messaging.Sbmp.SbmpMessageCreator
.它有这个方法:
private Message CreateWcfMessageInternal(string action, object body, bool includeToken, string parentLinkId, RetryPolicy policy, TrackingContext trackingContext, RequestInfo requestInfo)
{
Message message = Message.CreateMessage(this.messageVersion, action, body);
MessageHeaders headers = message.Headers;
headers.To = this.logicalAddress;
string sufficientClaims = this.GetSufficientClaims();
if (this.linkInfo != null)
{
if (!string.IsNullOrEmpty(this.linkInfo.TransferDestinationEntityAddress))
{
SecurityToken authorizationToken = this.GetAuthorizationToken(this.linkInfo.TransferDestinationEntityAddress, sufficientClaims);
if (authorizationToken != null)
{
SimpleWebSecurityToken webSecurityToken = (SimpleWebSecurityToken) authorizationToken;
if (webSecurityToken != null)
this.linkInfo.TransferDestinationAuthorizationToken = webSecurityToken.Token;
}
}
this.linkInfo.AddTo(headers);
}
if (includeToken)
{
ServiceBusAuthorizationHeader authorizationHeader = this.GetAuthorizationHeader(sufficientClaims);
if (authorizationHeader != null)
headers.Add((MessageHeader) authorizationHeader);
}
if (this.messagingFactory.FaultInjectionInfo != null)
this.messagingFactory.FaultInjectionInfo.AddToHeader(message);
if (!string.IsNullOrWhiteSpace(parentLinkId))
message.Properties["ParentLinkId"] = (object) parentLinkId;
if (trackingContext != null)
TrackingIdHeader.TryAddOrUpdate(headers, trackingContext.TrackingId);
MessageExtensionMethods.AddHeaderIfNotNull<RequestInfo>(message, "RequestInfo", "http://schemas.microsoft.com/netservices/2011/06/servicebus", requestInfo);
return message;
}
includeToken
是假的(为什么会这样?)GetAuthorizationHeader()
返回空值(为什么?)var kv = new KeyVaultClient(this.GetAccessToken);
var key = kv.GetSecretAsync(this.KeyVaultUri.AbsoluteUri, this.SharedAccessSecretName).Result;
var sharedAccessKey = key.Value;
var tokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(
this.SharedAccessSecretName,
sharedAccessKey);
bindingParameters.Add(new TransportClientEndpointBehavior { TokenProvider = tokenProvider });
最佳答案
哦!
我没有意识到,我们仍然在与(同样旧的)本地版本的服务总线(Windows Server 的服务总线)互操作的解决方案中使用的旧版本的 Microsoft.ServiceBus.dll 是我的项目引用的版本.无论出于何种原因,这个版本只是没有做它应该做的事情,并且没有给出任何迹象表明它正在绕过预期的行为。更新以使用服务总线的当前 NuGet 包可解决此问题。
关于wcf - 为什么 WCF 会忽略我的 TokenProvider?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40909769/
我有一个 BizTalk WCF 自定义接收位置,我已向其中添加了自定义行为: public class SasTokenProviderEndpointBehavior : BehaviorExte
我正在开发一个微服务,负责启动在 CloudFoundry 上运行的其他微服务。因此,我使用 cf-java-client ( https://github.com/cloudfoundry/cf-j
我正在尝试使用每晚构建的 ASP.NET Identity 1.1 来实现密码重置功能。有一个 UserManager.GetPasswordResetToken 方法,但它抛出异常“没有注册 ITo
我正在尝试从 .NET 4.7 连接到 Azure Key Vault 实例。应用程序在 IIS 和调试器 (Visual Studio 2022 17.4.4 ) 下本地运行,但遇到了来自 Azur
我正在尝试从 .NET 4.7 连接到 Azure Key Vault 实例。应用程序在 IIS 和调试器 (Visual Studio 2022 17.4.4 ) 下本地运行,但遇到了来自 Azur
我是一名优秀的程序员,十分优秀!