Używam Service Bus dla usług systemu Windows 1.0 na prem (klienci odwołują Microsoft.ServiceBus.dll 1.8.0.0)1.0 i usługi WCF NetMessagingBinding - token dostawcą w stanie zapewnić bezpieczeństwo tokenu
Próbuję dostać działający klient i usługa obsługi klienta usługi NetMessagingBinding.
Po prostu chcę wysłać wiadomość do magistrali usług i wypompować ją do mojej usługi wcf.
W tej chwili mam problemy z złożenia, gdyż nie może znaleźć tokena Provider:
Mam następujący kod:
private const string Issuer = "myIssuerName";
private const string Key = "BBBBBB=";
private static readonly Uri ServiceBusEndpointAddress =
new Uri("{sb://servicebusdefaultnamespace.servicebus.windows.net/Orders/}");
private static void Main(string[] args)
{
//SetUp
var binding = new NetMessagingBinding();
var contract = ContractDescription.GetContract(typeof (IOrderService), typeof (OrderService));
var transportBehavior = new TransportClientEndpointBehavior();
transportBehavior.TokenProvider = TokenProvider.CreateSharedSecretTokenProvider(Issuer, Key);
var endpoint = new ServiceEndpoint(contract, binding,
new EndpointAddress(ServiceBusEndpointAddress.AbsoluteUri));
endpoint.Behaviors.Add(transportBehavior);
var host = new ServiceHost(typeof (OrderService), ServiceBusEndpointAddress);
host.AddServiceEndpoint(endpoint);
host.Open();
//send message to queue
var factory = new ChannelFactory<IOrderService>(endpoint);
var client = factory.CreateChannel();
var order = new Order();
order.OrderId = 42;
//this is where the exception is raised
client.ProcessOrder(order);
factory.Close();
Console.ReadLine();
}
// moja klasa kolejność wygląda następująco:
[ServiceContract()]
public interface IOrderService
{
[OperationContract(IsOneWay = true)]
void ProcessOrder(Order order);
}
[DataContract()]
public class Order
{
[DataMember]
public Int64 OrderId;
}
Ale gdy próbuję wysłać do kolejki (client.ProcessOrder (zlecenia);)
otrzymuję 502:
unauthorisedaccessexception
The token provider was unable to provide a security token while accessing
'https://servicebusdefaultnamespace-sb.accesscontrol.windows.net/WRAPv0.9/'. Token
provider returned message: 'The remote name could not be resolved: 'servicebusdefaultnamespace-sb.accesscontrol.windows.net''.
The remote name could not be resolved: 'servicebusdefaultnamespace- sb.accesscontrol.windows.net'
at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
at System.Net.HttpWebRequest.GetRequestStream()
at Microsoft.ServiceBus.TokenProviderHelper.GetAccessTokenCore(Uri requestUri, String
appliesTo, String requestToken, String simpleAuthAssertionFormat, TimeSpan timeout,
String& expiresIn)
Skrzypek mówi mi:
[Fiddler] DNS Lookup for "servicebusdefaultnamespace-sb.accesscontrol.windows.net" failed. The requested name is valid, but no data of the requested type was found
Więc zastanawiałem się, na czym polega problem:
Czy sb: //servicebusdefaultnamespace.servicebus. windows.net/Orders/ poprawny identyfikator URI, aby skonfigurować punkt końcowy na ?. Pytam o to, ponieważ kiedy się dostać-sbClientConfiguration - mój ciąg połączenia jest:
Endpoint=sb://myPC/ServiceBusDefaultNamespace; StsEndpoint=https://myPC:9355/ServiceBusDefaultNamespace; RuntimePort=9354;ManagementPort=9355
Czy jest to fakt, że nie mogę używać sharedsecret na prem? (Wolę używać tej metody uwierzytelniania)
Czy ktoś może zauważyć problem?
Dzięki za pomoc