无法使用 ServiceControl 注册端点启动

Unable to register endpoint startup with ServiceControl

我正在执行基于主机的端点的 0.0.1 版实现,它一直运行良好,直到出现以下错误:

non-Unicode headers something something ...

在 t运行体育数据库级别。

遗憾的是没有被记录下来,所以我没有确切的信息。

因为我以前没有,所以我删除了我的 localdb 并将其重新创建为空白。我再次 运行 端点,现在我收到这些通知:

无法使用 ServiceControl 注册端点启动

2017-08-24 10:03:48.743 | Warn | ServiceControl.Features.Heartbeats | Unable to register endpoint startup with ServiceControl. Going to reattempt registration after 00:01:00.
NServiceBus.Unicast.Queuing.QueueNotFoundException: Failed to send message to [ServiceBusTransport].[dbo].[Particular.ServiceControl.Dev] ---> System.Data.SqlClient.SqlException: Invalid object name 'ServiceBusTransport.dbo.Particular.ServiceControl.Dev'.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)
   at System.Data.SqlClient.SqlCommand.CompleteAsyncExecuteReader(Boolean isInternal, Boolean forDescribeParameterEncryption)
   at System.Data.SqlClient.SqlCommand.InternalEndExecuteNonQuery(IAsyncResult asyncResult, String endMethod, Boolean isInternal)
   at System.Data.SqlClient.SqlCommand.EndExecuteNonQueryInternal(IAsyncResult asyncResult)
   at System.Data.SqlClient.SqlCommand.EndExecuteNonQueryAsync(IAsyncResult asyncResult)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)

无法向 ServiceControl 发送检测信号

2017-08-24 10:03:58.757 | Warn | ServiceControl.Features.Heartbeats | Unable to send heartbeat to ServiceControl.
NServiceBus.Unicast.Queuing.QueueNotFoundException: Failed to send message to [ServiceBusTransport].[dbo].[Particular.ServiceControl.Dev] ---> System.Data.SqlClient.SqlException: Invalid object name 'ServiceBusTransport.dbo.Particular.ServiceControl.Dev'.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption)
   at System.Data.SqlClient.SqlCommand.CompleteAsyncExecuteReader(Boolean isInternal, Boolean forDescribeParameterEncryption)
   at System.Data.SqlClient.SqlCommand.InternalEndExecuteNonQuery(IAsyncResult asyncResult, String endMethod, Boolean isInternal)
   at System.Data.SqlClient.SqlCommand.EndExecuteNonQueryInternal(IAsyncResult asyncResult)
   at System.Data.SqlClient.SqlCommand.EndExecuteNonQueryAsync(IAsyncResult asyncResult)
   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)

I've got no clue what I changed to cause this, any idea?

我知道 Particular.ServiceControl.Dev 是我的服务控制队列的名称。感觉好像没有创建匹配的 table,但我不确定为什么。

找到了,我们没有在开发级别设置 ServiceControl。由于我删除了整个 ServiceBusTransport 数据库,因此没有创建 Particular.ServiceControl.Dev

使用此查询手动创建后,它再次起作用:

CREATE TABLE [dbo].[Particular.ServiceControl.Dev](
    [Id] [uniqueidentifier] NOT NULL,
    [CorrelationId] [varchar](255) NULL,
    [ReplyToAddress] [varchar](255) NULL,
    [Recoverable] [bit] NOT NULL,
    [Expires] [datetime] NULL,
    [Headers] [varchar](max) NOT NULL,
    [Body] [varbinary](max) NULL,
    [RowVersion] [bigint] IDENTITY(1,1) NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]