Asp.net WebService Невозможно преобразовать объект типа 'System.Int32' в ty… neric.IDictionary`2 [System.String, System.Object] ' - PullRequest
0 голосов
/ 28 сентября 2019

Я пытался вызвать WebService с использованием Angular

. Я уже протестировал WebService и отправил запрос с помощью Postman, и он работал правильно.

Вот код для WebService

[WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.Web.Script.Services.ScriptService]
    [System.ComponentModel.ToolboxItem(false)]
    // 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 Temperature : System.Web.Services.WebService
    {
        [WebMethod]
        public double Farenheit(double celsius)
        {
            return  (celsius * 9) / 5 + 32;
        }
        [WebMethod]
        public double Celsius(double fahrenheit)
        {
            return (fahrenheit - 32) * 5 / 9;
        }
    }

А это мой угловой код

const httpOptions = {
      headers: new HttpHeaders({
        'Content-Type':  'application/json',

      })
    };

this.http.post('https://localhost:44389/Temperature.asmx/Celsius', 50,  httpOptions)
    .subscribe(res => {
      console.log('Data: ' + res);

    })

Метод Accept типа Int.И я передаю 50 целое число.Так почему я получаю эту ошибку.Я не понимаю, почему

ExceptionType: "System.InvalidOperationException"
Message: "Cannot convert object of type 'System.Int32' to type 'System.Collections.Generic.IDictionary`2[System.String,System.Object]'"
StackTrace: "   at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)
↵   at System.Web.Script.Serial

А вот скриншот реквизита POSTMAN

введите описание изображения здесь

1 Ответ

1 голос
/ 28 сентября 2019

Вам нужно передать:

{fahrenheit: 50}

вместо:

50

Это потому, что ваш существующий код пропускает число, но не указывает, какой параметр это соответствует.При явном упоминании fahrenheit серверная сторона может отобразить значение 50 на соответствующий параметр метода.

...