WF C#VS2012 - InvalidCast异常未被用户代码处理?

时间:2013-09-07 16:21:24

标签: c# visual-studio-2012 workflow-foundation

我在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;制造一辆汽车然后抛出这个错误。有任何想法吗 ?

1 个答案:

答案 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);