dbarni Ответов: 1

Получение ошибки при запуске простой веб - службы


Я построил очень простой веб-сервис на языке C# это серверный код

using MySql.Data;
[WebService(Namespace = "http://www.example.org/", Description = "Example web service in C#")]
	[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
	[ScriptService]
	public class ExampleService : System.Web.Services.WebService
	{
        
    	[WebMethod(Description = "Echos back a string")]
		[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]

		public string echoString(String testString)
		{
			// An example of a pragma for throwing an exception for invalid input
			// NB: You will still get basic type error handling even if you don't do this!
			// "InputValidationException" is a commonly used pragma for input handling in .NET
			if (testString.Length < 1)
				throw new InputValidationException("The input string must be at least one character");

			return testString; 
		}
       }


Когда я получаю доступ к ExampleServics.asmx через веб-браузер, он работает нормально. Однако когда я пытаюсь получить доступ к нему через javascript с помощью приведенного ниже кода я получаю следующую ошибку
Данные на корневом уровне недопустимы. Линия 1, Позиция 1. Насколько я понимаю, это вызвано искаженным утверждением. Вот javascript для запроса
var str = 
   'POST /ExampleService.asmx HTTP/1.1 ' +
     'Host: localhost ' +
     'Content-Type: text/xml; charset=utf-8 ' +
     'Content-Length: length ' +
     'SOAPAction: "http://www.example.org/echoString" ' +
     '<?xml version="1.0" encoding="utf-8"?> ' +
     '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> ' +
     '<soap:Body> ' +
     '<echoString xmlns="http://www.example.org/"> ' +
     '<testString>test</testString> ' +
     '</echoString> ' +
     '</soap:Body> ' +
     '</soap:Envelope> ';

        var url = "http://apislot/ExampleService.asmx";
        var soap_request =  makeSoapRequest(url);
        var xhr = new XMLHttpRequest();
        xhr.open("POST", url, true);
         xhr.onreadystatechange = function() {//Call a function when the state changes.
            // Request finished. Do processing here.
        }
       xhr.send(str);


Что я уже пробовал:

Я уже несколько дней пытаюсь решить эту проблему, но ничего не получается. Я был по всему интернету, но все, что я нахожу, - это ссылки на плохой запрос, но я не могу найти ничего плохого в приведенном выше коде. Пожалуйста помочь.

ZurdoDev

Я бы предложил вместо этого использовать jQuery.ajax ().

dbarni

Большое спасибо. Я переключился на jQuery и теперь он работает нормально

1 Ответов

Рейтинг:
5

ZurdoDev

Как уже упоминалось в комментариях, я бы предложил использовать вызов ajax() jQuery. Он справляется со сложностями за вас.

Рад слышать, что у тебя получилось.