2011-08-22 64 views
1

我正在使用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從數據庫中寫道,如下面的代碼:

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); 
} 

當我想放棄此活動時,它沒有顯示彈出式窗口,並顯示以下錯誤:異常已由調用的目標引發

有什麼幫助嗎? 謝謝。

+0

請發佈您的異常的堆棧跟蹤。我們無法猜測它從哪裏來。 – Amy

+0

在我運行該項目之前,它不在運行時,當我將它拖放到XMAL文件中時。 – Sofy

回答

0

給你提供給我們的最少信息所有我能做的就是猜測該行

Service1Client ser = new Service1Client(); 

導致您的問題。對於其中一個,沒有理由在設計時創建Service1Client。此外,它表明你不再需要時不會處置它。

但是,由於您沒有顯示完整的活動,所以我無法真正說出存在構造函數或CacheMetadata()中的代碼,這是錯誤的其他原因。

+0

你是對的,它來自Service1Client ser = new Service1Client();但是我可以用什麼替換它? – Sofy

+0

我發佈了xmal文件的活動和打印屏幕的整個代碼。謝謝 – Sofy

+0

只有在OnBookmarkCallback()中需要時才創建Service1Client,並確保在完成之後根據需要調用Close()或Abort()。這樣您可以保持連接和會話的打開時間遠遠超過所需的時間。當你注意到在VS2010中創建服務代理失敗時,我認爲是因爲缺少配置元素。 – Maurice

相關問題