如何通过与BiztalkAdministrationConsole中的FileReceiveName同名的发送端口发送文件?

如何通过与BiztalkAdministrationConsole中的FileReceiveName同名的发送端口发送文件?,biztalk,Biztalk,我收到一封附有文件的电子邮件 我通过接收位置检索电子邮件 通过管道检索附件 然后我有一个发送端口,它使用来自管道的消息 我希望发送端口以附件中文件的名称发布文档 我了解到,在发送端口配置中设置文件名时,必须使用宏%SourceFileName% 我试过了,但文件名显示为%SourceFileName% 我停止了发送端口以检查FileReceivedName是什么,这是我想要的。 这些是发送端口配置。 在我重新启动发送端口后,我将删除发布的文件。 %SourceFileName%是文件的宏。R

我收到一封附有文件的电子邮件

我通过接收位置检索电子邮件

通过管道检索附件

然后我有一个发送端口,它使用来自管道的消息

我希望发送端口以附件中文件的名称发布文档

我了解到,在发送端口配置中设置文件名时,必须使用宏%SourceFileName%

我试过了,但文件名显示为%SourceFileName%

我停止了发送端口以检查FileReceivedName是什么,这是我想要的。

这些是发送端口配置。

在我重新启动发送端口后,我将删除发布的文件。

%SourceFileName%
文件的宏。ReceivedFileName
消息上下文属性通常通过文件或FTP适配器添加到消息上下文,但不是SMTP。您可以自己在业务流程或接收管道中设置此属性,然后可以在发送端口上使用
%SourceFileName%
宏。

您可以在管道中提升上下文属性(尤其是ReceivedFileName),并使用宏来获取此属性,就像对ReceivedFileName所做的那样。查看以下内容:

从mime属性获取附件文件名,并在发送过程中将ReceivedFileName属性升级为获取%SourceFileName%

  public IBaseMessage Execute(IPipelineContext pContext, IBaseMessage pInMsg) {

        IBaseMessagePart bodyPart = pInMsg.BodyPart;          

        if (bodyPart != null)
        {
            string fileName = (string)pInMsg.Context.Read("ReceivedFileName", "http://schemas.microsoft.com/BizTalk/2003/file-properties");
            fileName = fileName.Substring(fileName.LastIndexOf("\\") + 1);
            pInMsg.BodyPart.PartProperties.Write("FileName", "http://schemas.microsoft.com/BizTalk/2003/mime-properties", fileName);                
        }

        return pInMsg;}

你在跟踪中看到名称空间中的“跳转”了吗?这不是正确的文件名称空间。你知道这是从哪里来的吗?@Johns-305这是在我写的描述脱装配工的课程代码中。我删除了它,清理了项目,更改了密钥,重建,重新部署,更改了引用,它仍然有新的跳转messages@Johns-305我删除了bin和obj文件夹。已关闭visual studio,命名空间属性消失。它现在正在使用%sourcefilename%。再次感谢。我没有使用编排,可以在自定义接收管道中执行吗?当然,您也可以在接收管道中执行。我已经更新了我的答案,以避免将来出现任何错误信息:)