我在Windows Workflow上的一本书中尝试了一个例子,我收到了一个错误:
InvalidCast异常未被用户代码
处理无法将'System.DBNull'类型的对象强制转换为'System.String'。
导致错误的确切代码是:
try
{
// Send data to workflow!
IDictionary<string, object> outputArgs =
WorkflowInvoker.Invoke(new CheckInventory(), wfArgs);
// Print out the output message.
Console.WriteLine(outputArgs["FormattedResponse"]);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
程序将运行,从用户那里得到两个问题:color&amp;制造一辆汽车然后抛出这个错误。有任何想法吗 ?
答案 0 :(得分:0)
我猜问题就在于行
Console.WriteLine(outputArgs["FormattedResponse"]);
看起来您正在尝试将outputArgs [“FormattedResponse”]转换为String(以便将其写入控制台),但它的计算结果为DBNull(即输出args中没有这样的输出消息) )。因此,在打印之前检查outputArgs [“FormattedResponse”]!= DBNull.Value:
var outputResponse = outputArgs["FormattedResponse"];
if(outputResponse != DBNull.Value)
Console.WriteLine(outputResponse);