powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / почему web service не может выполнить ExecuteNonQuery?
10 сообщений из 10, страница 1 из 1
почему web service не может выполнить ExecuteNonQuery?
    #36242561
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет! Пишу 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
почему web service не может выполнить ExecuteNonQuery?
    #36242612
А?
...
Рейтинг: 0 / 0
почему web service не может выполнить ExecuteNonQuery?
    #36242623
IvanN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
соединения с базой. В исключении сообщается, что соединение с базой закрыто.
проверьте строку соединения и открывается ли соединение.
...
Рейтинг: 0 / 0
почему web service не может выполнить ExecuteNonQuery?
    #36242709
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то что написано я и сам понимаю...
но бред какой-то.

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

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
почему web service не может выполнить ExecuteNonQuery?
    #36242714
Читать
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проверьте строку соединения и открывается ли соединение.
...
Рейтинг: 0 / 0
почему web service не может выполнить ExecuteNonQuery?
    #36242718
strassebahn_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где

Код: plaintext
myConnTMP.Open()
?
...
Рейтинг: 0 / 0
почему web service не может выполнить ExecuteNonQuery?
    #36242726
IvanN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
почему web service не может выполнить ExecuteNonQuery?
    #36242951
Фотография flashslash
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanN,

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


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