当我试图使用MassTransit 3在Azure中运行我的应用程序时,我得到了以下错误
实体名称或路径不能包含“/”作为前缀或后缀。提供的值是'/profile.api‘。参数名称: entityName
唯一能看到前缀被添加到队列名称的方法是通过MassTransit。
奇怪的是,队列是在中以"profile.api“的名字创建的。
以前有没有其他人经历过这种情况?我不确定这是否是MassTransit的错误,或者我是否错过了配置的一个步骤。
下面是完整的堆栈跟踪。
谢谢。
ArgumentException:实体名称或路径不能将'/‘作为前缀或后缀。提供的值是'/profile.api‘。参数名称: entityName ( Microsoft.ServiceBus.Common.AsyncResult.End(IAsyncResult结果) +381 Microsoft.ServiceBus.Messaging.MessagingFactory.EndCreateMessageReceiver(IAsyncResult结果) +70 System.Threading.Tasks.TaskFactory
1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction,Action1 endAction, Task1 promise,Boolean ) +86 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 MassTransit.AzureServiceBusTransport.Pipeline.-Send>d__7.MoveNext() +794 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +26 MassTransit.AzureServiceBusTransport.Pipeline.-Send>d__7.MoveNext() +2756 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 MassTransit.AzureServiceBusTransport.Pipeline.d__5.MoveNext() +1599 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 MassTransit.AzureServiceBusTransport.d.MoveNext() +531 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 MassTransit.Internals.Extensions.d__1.MoveNext() +924 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58 MassTransit.<StartAsync>d__29.MoveNext() +1154System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() +26MassTransit.<StartAsync>d__29.MoveNext() +2025System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58 MassTransit.Util.TaskUtil.Await(Func1 taskFactory,CancellationToken cancellationToken) +222 MassTransit.MassTransitBus.MassTransit.IBusControl.Start() +61 SampleApp.Startup.ConfigureBus() +33 SampleApp.Startup.Configuration(IAppBuilder应用) +428
发布于 2015-11-16 14:01:15
结果发现,与MassTransit测试如何运行其蔚蓝配置相比,我的应用程序的配置方式有一个非常微妙的差别。
而我有(不工作)
public class AzureBusModule : Autofac.Module
{
protected override void Load(ContainerBuilder builder)
{
builder.Register(context =>
{
var busControl = Bus.Factory.CreateUsingAzureServiceBus(sbc =>
{
var host = sbc.Host(new Uri("sb://" + ConfigurationManager.AppSettings["AzureEndPoint"]), h =>
{
h.OperationTimeout = TimeSpan.FromSeconds(5);
h.TokenProvider = TokenProvider.CreateSharedAccessSignatureTokenProvider(
ConfigurationManager.AppSettings["AzureKeyName"],
ConfigurationManager.AppSettings["AzureKeyValue"]);
});
sbc.UseSerilog();
sbc.UseJsonSerializer();
//sbc.UseRetry(Retry.Exponential(10.Seconds(), 3.Minutes(), 10.Seconds()));
sbc.ReceiveEndpoint(host, ConfigurationManager.AppSettings["QueueName"], ep =>
{
ep.LoadFrom(context);
});
});
Log.Information("Finished Configuring MassTransit using Azure");
return busControl;
})
.SingleInstance()
.As<IBusControl>()
.As<IBus>();
}
}更改以下修复了我的问题.
var serviceUri = ServiceBusEnvironment.CreateServiceUri("sb",
ConfigurationManager.AppSettings["AzureEndpoint"],
ConfigurationManager.AppSettings["AzureEndpointName"]);
var host = sbc.Host(serviceUri, h =>
{
// [...]
}我希望这对任何有类似问题的人都有帮助。
https://stackoverflow.com/questions/33723112
复制相似问题