【问题标题】:An error when I'm using DB with bookmark : exception has been thrown by the target of an invocation使用带有书签的 DB 时出现错误:调用目标引发了异常
【发布时间】:2011-08-22 23:18:52
【问题描述】:

我正在开发 WF,我正在制作书签。 当我写以下内容时,我可以很好地放弃这个活动:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Activities;
using System.Activities.Validation;
using Microsoft.VisualBasic.Activities;
using System.Windows;
using System.Data;
using System.Linq;
using SimpleWebDesigner.ServiceReference1;

namespace SimpleWebDesigner.Bookmark_exmple
{
    class newBookmark: NativeActivity
    {

        Service1Client ser = new Service1Client();

        [RequiredArgument]
        public OutArgument<bool> Out_arg { get; set; }//=new OutArgument<string>(output);// { get; set; }

        protected override void Execute(NativeActivityContext context)
        {
            context.CreateBookmark("samename", new BookmarkCallback(OnBookmarkCallback));
        }

        protected override bool CanInduceIdle
        {
            get
            {
                return true;
            }
        }
        void OnBookmarkCallback(NativeActivityContext context, Bookmark bookmark, object val)
        {

            bool approve;
            approve = (bool)ser.get_from_WF(1);
            Out_arg.Set(context, approve);            
        }
    }
}

赞这个页面https://skydrive.live.com/?cid=F1FD3CCD21D87C68&id=F1FD3CCD21D87C68%21351&sc=documents

但是当我通过 WCF 从 DB 读写时,代码如下:

class newBookmark: NativeActivity
{
    Service1Client ser = new Service1Client();
    [RequiredArgument]
    public OutArgument<bool> Out_arg { get; set; }//=new OutArgument<string>(output);// { get; set; }

    void OnBookmarkCallback(NativeActivityContext context, Bookmark bookmark, object val)
    {
        bool approve;
        string exp;
        approve = (bool)ser.get_from_WF(1);
        if (approve == true)
            exp = "momo";
        else
            exp = "yoyo";
        Out_arg.Set(context, exp);
}

当我想删除此活动时,它没有,并显示一个弹出窗口并显示以下错误:调用的目标已引发异常

有什么帮助吗? 谢谢。

【问题讨论】:

  • 请发布您的异常的堆栈跟踪。我们无法猜测它来自哪条线路。
  • 它不在运行时,当我将它拖放到 XMAL 文件中时,在我运行项目之前。

标签: wcf workflow-foundation-4 bookmarks


【解决方案1】:

鉴于你提供给我们的信息很少,我所能做的就是猜测这条线

Service1Client ser = new Service1Client();

导致您的问题。一方面,没有理由在设计时创建 Service1Client。此外,它建议您不要在不再需要它时将其丢弃。

但是,由于您没有显示完整的活动,我不能真正说构造函数或 CacheMetadata() 中的代码是错误的另一个原因。

【讨论】:

  • 你是对的,它来自 Service1Client ser = new Service1Client();但是我可以用什么来代替它?
  • 我发布了活动的整个代码并打印了 xmal 文件的屏幕。谢谢
  • 仅在需要时在 OnBookmarkCallback() 中创建 Service1Client,并确保在完成后根据需要调用 Close() 或 Abort()。这样,您可以使连接和会话保持打开的时间比需要的时间长得多。正如您注意到在 VS2010 中创建服务代理失败,我假设是因为缺少配置元素。
  • 在设计时没有可用的配置信息,这就是 Service1Client ctor 抛出异常的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-13
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
  • 2015-05-13
  • 1970-01-01
相关资源
最近更新 更多