Веб-сервис работает, но запись базы данных не вставляется - PullRequest
1 голос
/ 06 февраля 2012

У меня вызывается веб-служба C # asmx, и я вижу, что результаты возвращаются на клиенте, поэтому я знаю, что код выполняется до завершения без каких-либо исключений. Вот класс веб-сервиса:

namespace App_WebRole
{
    /// <summary>
    /// Summary description for SubscriptionStatus
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    [ScriptService]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class SubscriptionStatus : System.Web.Services.WebService
    {

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string HelloWorld()
        {
            DataSet1 dataSet = new DataSet1();
            DataSet1TableAdapters.StatusRequestsTableAdapter statusTableAdapter = new DataSet1TableAdapters.StatusRequestsTableAdapter();
            DataSet1.StatusRequestsRow newRow = dataSet.StatusRequests.NewStatusRequestsRow();
            newRow.ApplicationID = "Test";
            newRow.RequestDate = DateTime.Now;
            dataSet.StatusRequests.Rows.Add(newRow);
            dataSet.StatusRequests.AcceptChanges();
            statusTableAdapter.Update(dataSet);
            return "Hello World 2";
        }
    }
}

Я запускаю это локально на моем компьютере с локальной базой данных SQL Server Express и не вижу записей, вставляемых в соответствующую таблицу.

Если я изменяю возвращаемое значение, я вижу измененное значение в клиенте. Кроме того, я посмотрел на файл web.config в каталоге локального веб-сайта, и в нем есть строка подключения для локальной базы данных SQL Server Express.

Ответы [ 2 ]

1 голос
/ 07 февраля 2012

Принятие изменений до обновления приведет к тому, что обновление не увидит ничего, что требует обновления.Удалите строку dataSet.StatusRequests.AcceptChanges();.Обновление примет изменения для вас после его завершения.

0 голосов
/ 08 февраля 2012

На самом деле, чтобы это заработало, я переключился с использования DataSet (.xsd) в своем приложении на использование классов LINQ to SQL (.dbml). Ответ Джеймса, возможно, на самом деле сделал свое дело, но к тому времени, когда он опубликовал его, я уже переключил его на dbml и заставил его работать как шарм.

...