繁体   English   中英

Biztalk自定义函子非逻辑错误映射

[英]Biztalk custom functoid unlogical error in mapping

我开始为biztalk构建一些自定义日期函数。

我部署了自定义functoid类,并将其添加到biztalk映射器的自定义functoid列表中。

我的映射是这样的: https : //kurdy.de/owncloud/index.php/s/Law7vCB9lfLkg8J

<?xml version="1.0" encoding="UTF-16"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:var="http://schemas.microsoft.com/BizTalk/2003/var" exclude-result-prefixes="msxsl var ScriptNS0" version="1.0" xmlns:ns0="http://testdeleteme1.Output" xmlns:ScriptNS0="http://schemas.microsoft.com/BizTalk/2003/ScriptNS0">
  <xsl:output omit-xml-declaration="yes" method="xml" version="1.0" />
  <xsl:template match="/">
    <xsl:apply-templates select="/ns0:Datum" />
  </xsl:template>
  <xsl:template match="/ns0:Datum">
    <ns0:Datum>
      <xsl:for-each select="Testfalle">
        <Testfalle>
          <xsl:variable name="var:v1" select="ScriptNS0:DatetimeToCustomDatetime(string(Datum/text()) , string(Format/text()))" />
          <Datum>
            <xsl:value-of select="$var:v1" />
          </Datum>
          <xsl:if test="Format">
            <Format>
              <xsl:value-of select="Format/text()" />
            </Format>
          </xsl:if>
        </Testfalle>
      </xsl:for-each>
    </ns0:Datum>
  </xsl:template>
</xsl:stylesheet>

我的functoid需要2个参数,第一个是ac#datetime作为字符串,第二个是预期的目标格式格式为字符串。

例如param1 =“ 2015-09-15T20:15:13.000”,param2 =“ yyyyMMdd” functoid本身的功能在通用控制台应用程序中起作用。 它给我一个“ 20150915”。

但是在biztalk映射中,我遇到2个错误。 如果我调试地图:

“捕获到错误3异常:值不在预期范围内。”

如果我测试地图:

“错误3 XSL转换错误:无法将输出实例写入> [fileLocation]。值不能为null。参数名称:extension”

我的functoid的代码是:

    public string DatetimeToCustomDatetime(string date, string dateFormat)
    {
         DateTime dt;
         string retVal;
         ResourceManager resmgr = new ResourceManager("Custom.Biztalk.Datefunctoid" + ".DatetimeResources",  Assembly.GetExecutingAssembly());
         CultureInfo provider = CultureInfo.InvariantCulture;

         dateFormat =  dateFormat.Trim();
         dt = Convert.ToDateTime(date);

         try
         {
             retVal = dt.ToString(dateFormat);
         }
         catch (Exception myEx)
         {
             throw new  Exception(string.Format(resmgr.GetString("IDS_PERIMETERFUNCTOID_EXCEPTION"))  + date + " " + dateFormat + "\n" + myEx.Message);
         }
         return retVal;
     }

你能帮助我吗? 我真的不知道问题可能在哪里...

我已经建立了一个自定义functoid可以工作。 它将customdatetime转换为ac#datetime并可以工作,除了名称和functoid id外,它的构建几乎相同。

解决:SetExternalFunctionName(GetType()。Assembly.FullName,“ BIS.Custom.Functoid.DatetimeToAnyDatetime”,“ DatetimeToCustomDatetime”);

我从BaseFunctoid继承函数中为此设置了错误的名称空间。

解决:SetExternalFunctionName(GetType()。Assembly.FullName,“ BIS.Custom.Functoid.DatetimeToAnyDatetime”,“ DatetimeToCustomDatetime”);

我从BaseFunctoid继承函数中为此设置了错误的名称空间。

主要帖子中的更多信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM