triyul22 Ответов: 1

Удаленный сервер вернул ошибку: (400) неверный запрос.


У меня есть служба WCF для хранения и извлечения сообщений (в/из базы данных). Я звоню оттуда. ASP.NET.

Когда я запускаю свое приложение, я сталкиваюсь со следующей проблемой:

Удаленный сервер вернул ошибку: (400) неверный запрос.

На самом деле я не понимаю, как с этим справиться.
Вот класс, который создает исключение:

public class SendMessageClient
{
    private string BASE_URL = "http://localhost:49350/Service1.svc/";
    public bool sendMessage(Message message)
    {
        try
        {
            DataContractSerializer ser = new DataContractSerializer(typeof(Message));

            MemoryStream mem = new MemoryStream();
            ser.WriteObject(mem, message);
            string data = Encoding.UTF8.GetString(mem.ToArray(), 0, (int)mem.Length);
            WebClient webClient = new WebClient();
            webClient.Headers["Content-Type"] = "application/json";
            webClient.Encoding = Encoding.UTF8;
            webClient.UploadString(BASE_URL + "sendmessage", "POST", data);
            return true;
        }
        catch
        {
            return false;
        }
    }
}



Вот трассировка стека
at System.Net.HttpWebRequest.GetResponse() at System.Net.WebClient.GetWebResponse(WebRequest request) at System.Net.WebClient.DownloadBits(WebRequest request, Stream writeStream) at System.Net.WebClient.UploadBits(WebRequest request, Stream readStream, Byte[] buffer, Int32 chunkSize, Byte[] header, Byte[] footer) at System.Net.WebClient.UploadDataInternal(Uri address, String method, Byte[] data, WebRequest& request) at System.Net.WebClient.UploadString(Uri address, String method, String data) at System.Net.WebClient.UploadString(String address, String method, String data) at MessageServiceClient.Models.SendMessageClient.sendMessage(Message message) in C:\Users\Asus\source\repos\Web service project\MessageServiceClient\Models\SendMessageClient.cs:line 27


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

Я проверил свой сервис WCF с помощью reqbin и он работает с 200 OK вставляя данные в мою БД

1 Ответов

Рейтинг:
5

Garth J Lancaster

Учитывая, что ваш тип контента-JSON, не следует ли это

DataContractSerializer ser = new DataContractSerializer(typeof(Message));
заключаться в следующем
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Message));


Это единственное, что "очевидно".


triyul22

Большое вам спасибо!!! Он работает и сейчас

triyul22

Извините, что спрашиваю вас снова, но у меня есть новая проблема:
Система.BadImageFormatException: 'не удалось загрузить файл или сборку 'System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. Ссылочные сборки не должны загружаться для выполнения. Они могут быть загружены только в контексте загрузчика только для отражения.
Может быть вы что то посоветуете

Garth J Lancaster

ну, не имея перед собой проекта и не видя, добавили ли " вы " ссылку на System.Web.Extensions, я не могу думать о многом - я не очень много работаю с этими компонентами в наши дни, поэтому мне пришлось бы гуглить его самому. Извиняюсь