исключение корреляции asp.net и wf4 - PullRequest
0 голосов
/ 03 января 2012

Я довольно новичок в wf4, но создал простое консольное приложение с возможностями отправки, утверждения и отклонения.Сейчас я пытаюсь создать приложение asp.net, которое использует созданную мной службу, но получаю исключение ошибки, как показано ниже.Это отлично работало в моем консольном приложении

The execution of an InstancePersistenceCommand was interrupted because 
the instance key '3a552603-c92f-2424-085c-7b6fc1a0e98e' was not associated to 
an instance

В основном я создал 3 простых страницы.Первая страница - это простая форма, где пользователь отправляет запрос.2-я страница просто печатает список запросов.Нажав на один из запросов, вы попадете на 3-ю страницу, где печатается более подробный вид запроса с кнопкой подтверждения и отклонения.Я использую GUID для корреляции, которая передается на 3-ю страницу через строку запроса.Нажатие на кнопку подтверждения запускает метод подтверждения службы, передающей значение строки запроса.На данный момент я получаю исключение.Странно то, что guid в сообщении об ошибке не совпадает со значением, которое я передаю.

Любые идеи ниже - мой код, который помогает

1-я страница

protected void Unnamed1_Click(object sender, EventArgs e) {
        ServiceReference1.ServiceClient Client = new ServiceReference1.ServiceClient();
        ServiceReference1.Request R = new ServiceReference1.Request();
        R.Title = TxtRequestTitle.Text;
        R.Amount = Convert.ToInt32(TxtAmount.Text);

        Guid g = Guid.NewGuid();

        Client.SubmitRequest(R, g);

        Response.Write("submitted");
    }

2-я страница

protected void Page_Load(object sender, EventArgs e) {
    using (SqlConnection con = new SqlConnection(@"Data Source=bantai11\sqlexpress;Initial Catalog=RequestMonkey;Integrated Security=True;Asynchronous Processing=True")) {
        using (SqlCommand com = new SqlCommand()) {
            com.Connection = con;

            com.CommandType = System.Data.CommandType.Text;
            com.CommandText = "Select InstanceId, Title, state from Requests";

            DataTable dt = new DataTable();
            SqlDataAdapter sda = new SqlDataAdapter(com);
            sda.Fill(dt);

            rp.DataSource = dt;
            rp.DataBind();
        }
    }
}

3-я страница

   protected void Page_Load(object sender, EventArgs e) {
        this._id = Request.QueryString.Get("Id");

        using (SqlConnection con = new SqlConnection(@"Data Source=bantai11\sqlexpress;Initial Catalog=RequestMonkey;Integrated Security=True;Asynchronous Processing=True")) {
            using (SqlCommand com = new SqlCommand()) {
                con.Open();

                com.Connection = con;

                com.CommandType = System.Data.CommandType.Text;
                com.CommandText = "Select InstanceId, Title, state from Requests where instanceid = '" + this._id + "'";

                SqlDataReader dr = com.ExecuteReader();

                dr.Read();

                lblTitle.Text = dr[1].ToString();
                lblGuid.Text = dr[0].ToString();
                lblAmount.Text = "0";
            }
        }
}

protected void btnApprove_Click(object sender, EventArgs e) {
        ServiceReference1.ServiceClient Client = new ServiceReference1.ServiceClient();
        Client.Approve(1, this._id);
    }

1 Ответ

0 голосов
/ 04 января 2012

Исключение означает, что InstanceStore не удалось найти рабочий процесс, связанный с этим ключом.Возможно, рабочий процесс уже завершен или прерван с ошибкой.Вам нужно получить данные отслеживания на WorkflowService, чтобы увидеть, что происходит не так.См. Устранение неполадок служб Workflow с ведением журнала диагностики

...