Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / почему web service не может выполнить ExecuteNonQuery? / 10 сообщений из 10, страница 1 из 1
09.10.2009, 16:04
    #36242561
flashslash
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему web service не может выполнить ExecuteNonQuery?
Всем привет! Пишу web-приложение, кот. использует web-сервис.
Все в одном солюшене... web-сервис запущен.
Обращаюсь к методу web-сервиса

adosm.ado_small WS = new mySiteAdmin.adosm.ado_small();
adosm.ParamsSQLCommand pr=new mySiteAdmin.adosm.ParamsSQLCommand();
pr.свойство1=...;
pr.свойствоN=...;

adosm.ParamsSQLCommand[] prMas=new adosm.ParamsSQLCommand[1];
prMas.SetValue(pr, 0);

//Вызов web-службы
string sx = WS.runSP_TEST(prMas, "saveTxt", true, 1, out sErr);


но в итоге я получаю сообщение об ошибке:

"System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.InvalidOperationException: ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.\n at System.Data.SqlClient.SqlConnection.GetOpenConnection(String method)\n at System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command)\n at System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async)\n at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)\n at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()\n at ADO_class.ado.runSP_TEST(ParamsSQLCommand[] paramLst, String sNameSP, Boolean flagReturn, Int32 iCount, String& sErr) in D:\\...путь..\\ado.cs:line 2810\n at ado_small.Service1.runSP_TEST(ParamsSQLCommand[] paramLst, String sNameSP, Boolean flagReturn, Int32 iCount, String& sErr) in D:\\...путь..\\Service1.asmx.cs:line 36\n --- End of inner exception stack trace ---"


Сразу скажу, что вызываемый метод работает исправно с теми же входными параметрами.
Проверял при использовании без web-сервисов и никакой connection при этом не закрывается!
Как быть? в чем ошибка?
Спасибо!
...
Рейтинг: 0 / 0
09.10.2009, 16:22
    #36242612
почему web service не может выполнить ExecuteNonQuery?
А?
...
Рейтинг: 0 / 0
09.10.2009, 16:24
    #36242623
IvanN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему web service не может выполнить ExecuteNonQuery?
соединения с базой. В исключении сообщается, что соединение с базой закрыто.
проверьте строку соединения и открывается ли соединение.
...
Рейтинг: 0 / 0
09.10.2009, 16:52
    #36242709
flashslash
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему web service не может выполнить ExecuteNonQuery?
то что написано я и сам понимаю...
но бред какой-то.

вот сокращенный код процедуры:

public string runSP_TEST(ADO_class.ParamsSQLCommand[] paramLst, string sNameSP, bool flagReturn, int iCount, out string sErr)
{
ErrorText = "";//Чистим текст ошибки
string sVal = "";
int i = 0;

sErr = "";

if (iCount <= 0) return "10";//0;
SqlConnection myConnTMP = new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ConnectionString);

SqlCommand myCmd = new SqlCommand(sNameSP, myConnTMP);
myCmd.CommandType = CommandType.StoredProcedure;

...дальше в myCmd вставляем параметры и вызываем
try{
myCmd.ExecuteNonQuery();
}
catch (SqlException exp)
{
sErr = exp.Message;
return "_Direction=" + paramLst[0]._Direction.ToString() + " _Name=" + paramLst[0]._Name.ToString() + " _Size=" + paramLst[0]._Size.ToString() + " _Type=" + paramLst[0]._Type.ToString() + " _Val=" + paramLst[0]._Val.ToString();
//return -1;
}

finally
{
myConnTMP.Close();
}


так что как видите, все ок с открытием коннекшена!
...
Рейтинг: 0 / 0
09.10.2009, 16:54
    #36242714
Читать
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему web service не может выполнить ExecuteNonQuery?
проверьте строку соединения и открывается ли соединение.
...
Рейтинг: 0 / 0
09.10.2009, 16:56
    #36242718
strassebahn_X
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему web service не может выполнить ExecuteNonQuery?
А где

Код: plaintext
myConnTMP.Open()
?
...
Рейтинг: 0 / 0
09.10.2009, 16:58
    #36242726
IvanN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему web service не может выполнить ExecuteNonQuery?
flashslashто что написано я и сам понимаю...
но бред какой-то.

вот сокращенный код процедуры:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
public string runSP_TEST(ADO_class.ParamsSQLCommand[] paramLst, string sNameSP, bool flagReturn, int iCount, out string sErr)
        {
            ErrorText = "";//Чистим текст ошибки
            string sVal = "";
            int i = 0;

            sErr = "";

            if (iCount <= 0) return "10";//0;
            SqlConnection myConnTMP =  new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ConnectionString);

            SqlCommand myCmd = new SqlCommand(sNameSP, myConnTMP);
            myCmd.CommandType = CommandType.StoredProcedure;

...дальше в myCmd вставляем параметры и вызываем 
try{
     myCmd.ExecuteNonQuery();
}
            catch (SqlException exp)
            {
                sErr = exp.Message;
                return "_Direction=" + paramLst[0]._Direction.ToString() + " _Name=" + paramLst[0]._Name.ToString() + " _Size=" + paramLst[0]._Size.ToString() + " _Type=" + paramLst[0]._Type.ToString() + " _Val=" + paramLst[0]._Val.ToString();
                //return -1;
            }

            finally
            {
               myConnTMP.Close();
            }

так что как видите, все ок с открытием коннекшена!
то что вы создали эксемпляр класса-строки соединения, еще ни о чем не говорит. соединение нужно ещё и открывать.

Код: plaintext
myConnTMP.Open();
...
Рейтинг: 0 / 0
09.10.2009, 18:17
    #36242951
flashslash
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему web service не может выполнить ExecuteNonQuery?
IvanN,

сорри, это я случайно в тексте сообщения упустил эту команду.
Команда Open есть, но ошибка остается прежней...
Такое ощущение, что просто нет прав на открытие Connection..
хотя в проекте, где я использую тот же метод, но не через web service,
а как просто класс никакой ошибки нет (повторяю)!
Вся проблема связана только с использованием web сервиса!
...
Рейтинг: 0 / 0
09.10.2009, 18:21
    #36242961
winsky!
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему web service не может выполнить ExecuteNonQuery?
flashslashВся проблема связана только с использованием web сервиса!
у вас наверное сервис выполняет это от эккаунта, у которого нет прав ходить в эту базу...
...
Рейтинг: 0 / 0
09.10.2009, 18:54
    #36243037
flashslash
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
почему web service не может выполнить ExecuteNonQuery?
winsky!flashslashВся проблема связана только с использованием web сервиса!
у вас наверное сервис выполняет это от эккаунта, у которого нет прав ходить в эту базу...
Да, я это уже понял. Сейчас пробую.
Спасибо!
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / почему web service не может выполнить ExecuteNonQuery? / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]