2

我正在做一个基于主机的端点的 0.0.1 版本实现,它工作得很好,直到我收到错误抱怨:

非Unicode标头的东西...

在传输数据库级别。

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

因为我以前没有,所以我删除了我的 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)

我不知道我改变了什么导致这个,知道吗?

我知道这Particular.ServiceControl.Dev是我的 ServiceControl 队列的名称。感觉就像没有创建匹配表,但我不知道为什么。

4

1 回答 1

2

找到了,我们没有在开发级别设置 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]
于 2017-08-24T09:29:31.287 回答