Ошибка при использовании БД с закладкой: цель вызова выдала исключение

Работаю над 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);
}

когда я хочу удалить это действие, оно этого не сделало и показывает мне всплывающее окно со следующей ошибкой: цель вызова выдала исключение

Любая помощь? Спасибо.


person Sofy    schedule 22.08.2011    source источник
comment
Пожалуйста, опубликуйте трассировку стека вашего исключения. Мы не можем догадаться, из какой строки он исходит.   -  person    schedule 23.08.2011
comment
это не во время выполнения, когда я перетаскиваю его в файл XMAL перед запуском проекта.   -  person Sofy    schedule 23.08.2011


Ответы (1)


Учитывая минимальную информацию, которую вы нам предоставили, все, что я могу сделать, это предположить, что линия

Service1Client ser = new Service1Client();

вызывает ваши проблемы. Во-первых, нет причин создавать Service1Client во время разработки. Кроме того, он предполагает, что вы не избавляетесь от него, когда он больше не нужен.

Однако, поскольку вы не отображаете полную активность, я не могу сказать, что в конструкторе или CacheMetadata() есть код, который является дополнительной причиной ошибок.

person Maurice    schedule 23.08.2011
comment
вы правы, это из Service1Client ser = new Service1Client(); но чем мне его заменить? - person Sofy; 23.08.2011
comment
Я публикую весь код активности и экран печати для файла xmal. Спасибо - person Sofy; 23.08.2011
comment
Создавайте Service1Client только тогда, когда он вам нужен в OnBookmarkCallback(), и обязательно вызывайте Close() или Abort() по мере необходимости, когда вы закончите с ним. Таким образом, вы можете держать соединения и сеансы открытыми гораздо дольше, чем это необходимо. И, как вы заметили, создание прокси-сервера службы в VS2010 не удается, я полагаю, из-за отсутствующих элементов конфигурации. - person Maurice; 23.08.2011
comment
Во время разработки нет доступной информации о конфигурации, поэтому Service1Client ctor выдает исключение. - person Ron Jacobs; 24.08.2011