Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
BizTalk WCF-CUSTOM Sqlbinding生成从字符串到字节[]的类型转换错误_Biztalk_Biztalk 2016 - Fatal编程技术网

BizTalk WCF-CUSTOM Sqlbinding生成从字符串到字节[]的类型转换错误

BizTalk WCF-CUSTOM Sqlbinding生成从字符串到字节[]的类型转换错误,biztalk,biztalk-2016,Biztalk,Biztalk 2016,我正在将BizTalk 2010解决方案迁移到BizTalk 2016。所有内容都已大量复制和粘贴,因此没有任何更改,2010版也可以正常工作,但当我向WCF-CUSTOM端口发送消息时(sqlbinding to Storage procedures),它会停止并记录从字符串到字节[]的类型转换错误 我试着在2010年的部署中传达同样的信息,这很好,但在2016年就不行了。我尝试用存储过程生成的模式创建另一个简单的编排,它也会产生错误,请参见下文 适配器无法传输发送端口WcfSendPort_

我正在将BizTalk 2010解决方案迁移到BizTalk 2016。所有内容都已大量复制和粘贴,因此没有任何更改,2010版也可以正常工作,但当我向WCF-CUSTOM端口发送消息时(sqlbinding to Storage procedures),它会停止并记录从字符串到字节[]的类型转换错误

我试着在2010年的部署中传达同样的信息,这很好,但在2016年就不行了。我尝试用存储过程生成的模式创建另一个简单的编排,它也会产生错误,请参见下文

适配器无法传输发送端口WcfSendPort_SqlAdapterBinding_TypedProcedures_dbo_Custom的消息,URL为mssql://*****。它将在为此发送端口指定的重试间隔后重新传输。详细信息:System.InvalidCastException:无法将参数值从字符串转换为字节[]。-->System.InvalidCastException:从“System.String”到“System.Byte[]”的转换无效。 在System.Convert.DefaultToTypeIConvertible值中,键入targetType,IFormatProvider 在System.Data.SqlClient.SqlParameter.ImpresseValueObject值、元类型destinationType、Boolean&ImpressedToDataFeed、Boolean&typeChanged、Boolean allowStreaming中 -内部异常堆栈跟踪的结束--

服务器堆栈跟踪: 在System.Runtime.AsyncResult.End[TAsyncResult]IAsyncResult结果 位于System.ServiceModel.Channel.ServiceChannel.SendAsyncResult.EndSendAsyncResult 在System.ServiceModel.Channels.ServiceChannel.EndCallString操作中,对象[]输出,IAsyncResult结果 在System.ServiceModel.Channels.ServiceChannel.EndRequestIAsyncResult结果中

在[0]处重试异常: 在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessageIMessage reqMsg、IMessage retMsg 在System.Runtime.Remoting.proxy.RealProxy.PrivateInvokeMessageData和msgData中,Int32类型 在System.ServiceModel.Channels.IRequestChannel.EndRequestIAsyncResult结果中 在Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallbackIAsyncResult结果中

它应该发送的消息是

这是存储的进程

    CREATE PROCEDURE [dbo].[***]
    (
        @BatchId BIGINT OUTPUT,
        @BatchGuid VARCHAR(50) = NULL,
        @Contract VARCHAR(50) = NULL,
        @Initiating***Id BIGINT = NULL,
        @LinesExpected INT = NULL,
        @LinesProcessed INT = NULL,
        @SourceSystemMessageId VARCHAR(50) = NULL,
        @SourceSystemName VARCHAR(50) = NULL,
        @CreatedBy NVARCHAR(255) = NULL,
        @RowId  TIMESTAMP  = 0x00000000000007D9 OUTPUT 
    )
    AS

        SET NOCOUNT ON


        if @BatchGuid  is NULL
        set @BatchGuid = ''
        if @Contract  is NULL
        set @Contract  = ''
        if @Initiating***Id is NULL
        set @Initiating***Id = 0
        if @LinesExpected  is NULL
        set @LinesExpected  = 0
        if @LinesProcessed is NULL
        set @LinesProcessed = 0
        if @SourceSystemMessageId  is  NULL
        set @SourceSystemMessageId  = ''
        if @SourceSystemName is NULL
        set  @SourceSystemName  = ''
        if @CreatedBy is NULL
        set @CreatedBy  = ''



        INSERT INTO dbo.[***]
        (
            [BatchGuid],
            [Contract],
            [Initiating***Id],
            [LinesExpected],
            [LinesProcessed],
            [SourceSystemMessageId],
            [SourceSystemName],
            [CreatedBy],
            [CreatedDate]
        )
        VALUES
        (
            @BatchGuid,
            @Contract,
            @Initiating***Id,
            @LinesExpected,
            @LinesProcessed,
            @SourceSystemMessageId,
            @SourceSystemName,
            @CreatedBy,
            getdate()

        )

        SELECT @BatchId = Scope_Identity()

        SELECT @RowId = RowId FROM [***]
        WHERE  [BatchId] = @BatchId

        SET NOCOUNT OFF
        RETURN

GO

请注意***只是在掩盖敏感信息

结果表明问题是由于rowId参数中的空值造成的。BizTalk 10处理空值的方式似乎有所不同

您是否尝试过将发送管道更改为passthrough?@Jason Hoyle,您是否在架构生成期间也启用了EnableBizTalkCompatibilityMode?@metal嗨,是的,我尝试过,但它产生了相同的结果error@r3verse是的,这是为两个参数设置的。问题参数的DbType是什么?从技术上讲,是NetFx的新XslTransform类导致了这一问题: