Biztalk 无法路由已发布的邮件,因为找不到订阅服务器

Biztalk 无法路由已发布的邮件,因为找不到订阅服务器,biztalk,biztalk-2013r2,Biztalk,Biztalk 2013r2,在服务器中运行BizTalk包时,我出现以下错误: 无法路由已发布的邮件,因为找不到订阅服务器 包装说明: 使用存储过程将CSV平面文件导入SQL Server 细分: 创建表代码: CREATE TABLE [dbo].[Accounts]( [Id] [int] IDENTITY(1,1) NOT NULL, [AccountName] [nvarchar](150) NULL, [ServiceAddress] [nvarchar](150) NULL,

在服务器中运行BizTalk包时,我出现以下错误:

无法路由已发布的邮件,因为找不到订阅服务器

包装说明: 使用存储过程将CSV平面文件导入SQL Server

细分:

创建表代码:

CREATE TABLE [dbo].[Accounts](
    [Id] [int] IDENTITY(1,1) NOT NULL,
    [AccountName] [nvarchar](150) NULL,
    [ServiceAddress] [nvarchar](150) NULL,
    [AccountNumber] [nvarchar](50) NULL,
 CONSTRAINT [PK_Accounts] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]
创建存储过程代码:

CREATE PROCEDURE [dbo].[InsertAccount]
    @AccountName AS NVARCHAR(150) ,
    @ServiceAddress AS NVARCHAR(150) ,
    @AccountNumber AS NVARCHAR(50)
AS 
    INSERT  INTO dbo.accounts
            ( AccountName ,
              ServiceAddress ,
              AccountNumber
            )
            SELECT  @AccountName ,
                    @ServiceAddress ,
                    @AccountNumber
平面文件:命名为sample.csv

Account Name,Service Address,Account Number
JOE BLOW,ADDRESS X CITYX IL 61999,932F623Y52
我正在使用WCF连接到数据库

我正在使用存储过程

我为平面文件创建了一个模式

接收端口配置

发送端口配置

我创建了一条消息来接收平面文件

我创建了一条消息将XML发送到SQL

我删除了接收组件并分配了平面文件消息

我删除了Send组件并分配了存储的Proc消息

我删除了存储过程的接收响应组件

然后我删除了一个构造消息组件来初始化XML文档并创建映射

我将包部署到服务器,而没有部署到GAC, 然后我在GAC中手动注册了该组件

在服务器中:

我设置了所有接收和发送端口:

发送端口

我配置应用程序的时候

我启动了应用程序:

  • 接收位置启用
  • 发送端口已启动
  • 我完全停止并重新启动了应用程序
我放下文件,文件消失了,我得到了错误

我收到以下错误

消息引擎无法处理适配器提交的消息:文件源URL:C:\Biztalk Test\Sales\SampleFile*.csv。详细信息:无法路由已发布的邮件,因为找不到订阅服务器。如果订阅业务流程或发送端口尚未登记,或者订阅评估所需的某些消息属性尚未升级,则会发生此错误。请使用Biztalk管理控制台对此故障进行故障排除

接收位置“ServerReceiveLocation”上的适配器“FILE”接收到的URI为“C:\Biztalk Test\Sales\SampleFile*.csv”的消息已挂起。 错误详细信息:无法路由已发布的邮件,因为找不到订阅服务器。如果订阅业务流程或发送端口尚未登记,或者订阅评估所需的某些消息属性尚未升级,则会发生此错误。请使用Biztalk管理控制台对此故障进行故障排除


基本上,业务流程上的订阅与接收到的消息上的上下文属性不匹配

当您遇到此错误时,您需要做的始终是查看挂起的消息,查看其外观,并将其上下文属性与BizTalk Administrator中的订阅进行比较

在您的情况下,问题似乎是您没有一个接收管道,该管道具有一个平面文件disassembler,该平面文件disassembler上指定了平面文件方案,该平面文件disassembler可以将其转换为XML,并使用模式名为的消息类型上下文属性发布它

因此,现在的情况是,它将原始平面文件发布到消息框中,而没有消息类型,消息类型也是业务流程订阅的内容,并且您没有特定的订阅规则来侦听来自该端口的消息,该端口随后可以处理原始消息。因此,它不知道如何处理该消息,并使用上述错误将其挂起。

您声明:

“我将包部署到服务器,但没有部署到GAC,然后在GAC中手动注册组件。”

但是,这表示BizTalk Server的部署过程不正确。您应该而不是必须手动进行GAC。此外,您不会指明在BizTalk Server中注册(导入)组件的任何位置

如果不导入,运行时就看不到任何工件,因此找不到任何模式

如果您在本地运行(此时您应该在本地运行),只需从Visual Studio部署,所有内容都将被注册并自动关闭


如果要部署到远程服务器(不能是您的开发/测试BizTalk实例),则必须从生成计算机导出.msi,或使用BizTalk部署框架创建部署包。

因此,对于So来说,在奇怪的状态下,这是太多的信息,会混淆问题。有一个有趣的小道消息。请看我的答案。