Почему моя веб-служба SQL всегда возвращает null?
Веб-служба:
public class MyWebService : System.Web.Services.WebService { public MyWebService() { } [WebMethod] public string HelloWorld() { return "Hello World"; }
Хранимая процедура:
CREATE PROC Hello AS DECLARE @obj AS INT DECLARE @Uri AS NVARCHAR(MAX) DECLARE @Response AS BIT SET @Uri = 'http://MY IP IS HERE :9671/MyWebService.asmx/HelloWorld' EXEC sp_OACreate 'MSXML2.ServerXMLHttp.3.0', @obj OUT EXEC sp_OAMethod @obj, 'open', NULL, 'POST', @Uri, false EXEC sp_OAGetProperty @obj, 'ResponseText', @Response OUTPUT SELECT @Response [response] EXEC sp_OADestroy @obj RETURN
Исполняя его вот так:
EXEC Hello
Выходные данные после вызова хранимой процедуры всегда равны нулю, но я хочу установить возвращаемое значение веб-службы в качестве выходных данных. (Моя среда CLR SQL SERVER 2012 включена)
Suvabrata Roy
Я думаю, что sp_OACreate не может создать объект
Попробуйте этот код
msxml2 описывается @ч=процедуры sp_oacreate '.Для serverxmlhttp.3.0', @obj-файлы из
Если @hr <> 0
НАЧАТЬ
EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT
raiserror('ошибка создания COM-компонента 0x%x, %s, %s',16,1, @hr, @src, @desc)
ВЕРНУТЬ
КОНЕЦ;
Roozbeh Amiressami
когда я отслеживаю ваш код, если условие никогда не истинно, и я получил этот xml-код, и я думаю, что @hr всегда равен нулю.
вы можете мне объяснить?
<!--?xml version="1.0" encoding="utf-8"?-->
<string xmlns="http://www.webserviceX.NET/"><StockQuotes><Stock><Symbol>MSFT</Symbol><Last>45.09</Last><Date>9/2/2014</Date><Time>4:15pm</Time><Change>-0.34</Change><Open>45.43</Open><High>45.46</High><Low>44.85</Low><Volume>22976776</Volume><MktCap>371.5B</MktCap><PreviousClose>45.43</PreviousClose><PercentageChange>-0.75%</PercentageChange><AnnRange>30.95 - 45.71</AnnRange><Earns>2.63</Earns><P-E>17.27</P-E><Name>Microsoft Corpora</Name></Stock></StockQuotes>
Suvabrata Roy
Это ответ вашего веб-сервиса ?
Roozbeh Amiressami
да
Suvabrata Roy
Ваш код и выходные данные не совпадают поэтому пожалуйста проверьте ваш сервис URL и название операции
Nitin S
http://MY IP здесь:9671
Правильно ли вы развернули свой веб-сервис? вы пробовали получить доступ к нему через веб-браузер?
Roozbeh Amiressami
привет
Мой ip-это действительный IP-адрес на выделенном сервере в интернете
да, я действительно попробовал это, и я получил xml-строку "HelloWord" в браузере бота, когда я ecec мой proc результат sql всегда равен нулю
Kornfeld Eliyahu Peter
Если вы откроете свой URL - адрес ... http://MY IP находится здесь :9671/MyWebService.asmx/HelloWorld - в браузере, что вы получаете?
Roozbeh Amiressami
это значение:
(Я удалил некоторые знаки тегов, чтобы кодировать проект, а не преобразовывать его в тег)
!--?xml version="1.0" encoding="UTF-8"?->
строка xmlns="http://tempuri.org/">Hello World /string
Kornfeld Eliyahu Peter
Это хорошо...сейчас. Можете ли вы запустить свой SP построчно, чтобы увидеть все возможные ошибки, которые у вас могут быть?
Roozbeh Amiressami
Я не мог найти никакой ошибки в моем SP
вы можете отследить его для меня?
Kornfeld Eliyahu Peter
Нет. Пожалуйста,не ищите ошибок в SP, а запускайте его содержимое построчно...
Roozbeh Amiressami
хорошо дорогая
Я сделала это @ч-от 0 до конца
@object получил значение 16711422
но @Response никогда не получал значения в командной строке 9
(EXEC sp_OAGetProperty @obj, 'Response', @Response OUTPUT)
Exec @hr=sp_OACreate 'MSXML2.XMLHTTP', @Object OUT
Roozbeh Amiressami
Большое вам спасибо вы помогли мне когда я был в очень плохой ситуации
Я очень сожалею об этом, но можете ли вы увидеть мою другую проблему в этой проблеме?
http://www.codeproject.com/Questions/814699/Why-My-Webservice-Trow-Eeption-When-I-Execute-My-S