Biztalk 自定义 functoid 映射中的非逻辑错误
Biztalk custom functoid unlogical error in mapping
我开始为 biztalk 构建一些自定义日期 functoid。
我部署了自定义 functoid class,并将其添加到 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 个参数,第一个是作为字符串的 c# 日期时间,第二个是作为字符串的预期目标格式格式。
例如 param1="2015-09-15T20:15:13.000", param2="yyyyMMdd"
functoid 本身的功能在通用控制台应用程序中工作。它给了我一个“20150915”。
但是在 biztalk 映射中我得到 2 个错误。
如果我调试地图:
"Error 3 Exception Caught: Value does not fall within the expected range."
如果我测试地图:
"Error 3 XSL transform error: Unable to write output instance to the >following [fileLocation]. Value cannot be null.
Parameter name: 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 转换为 c# datetime 并且可以工作,除了名称和 functoid id 之外,它的构建几乎相同。
已解决:
SetExternalFunctionName(GetType().Assembly.FullName
, "BIS.Custom.Functoid.DatetimeToAnyDatetime"
, "DatetimeToCustomDatetime");
我在此从 BaseFunctoid 继承函数中设置了错误的命名空间。
已解决:SetExternalFunctionName(GetType().Assembly.FullName , "BIS.Custom.Functoid.DatetimeToAnyDatetime" , "DatetimeToCustomDatetime");
我从 BaseFunctoid 继承函数中设置了一个错误的命名空间。
主要信息 post。
我开始为 biztalk 构建一些自定义日期 functoid。
我部署了自定义 functoid class,并将其添加到 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 个参数,第一个是作为字符串的 c# 日期时间,第二个是作为字符串的预期目标格式格式。
例如 param1="2015-09-15T20:15:13.000", param2="yyyyMMdd" functoid 本身的功能在通用控制台应用程序中工作。它给了我一个“20150915”。
但是在 biztalk 映射中我得到 2 个错误。 如果我调试地图:
"Error 3 Exception Caught: Value does not fall within the expected range."
如果我测试地图:
"Error 3 XSL transform error: Unable to write output instance to the >following [fileLocation]. Value cannot be null. Parameter name: 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 转换为 c# datetime 并且可以工作,除了名称和 functoid id 之外,它的构建几乎相同。
已解决: SetExternalFunctionName(GetType().Assembly.FullName , "BIS.Custom.Functoid.DatetimeToAnyDatetime" , "DatetimeToCustomDatetime");
我在此从 BaseFunctoid 继承函数中设置了错误的命名空间。
已解决:SetExternalFunctionName(GetType().Assembly.FullName , "BIS.Custom.Functoid.DatetimeToAnyDatetime" , "DatetimeToCustomDatetime");
我从 BaseFunctoid 继承函数中设置了一个错误的命名空间。
主要信息 post。