Плохой запрос 400 при отправке xml-запроса в wcf rest - PullRequest
0 голосов
/ 29 января 2010

Я пишу пример приложения, использующего wcf rest для аутентификации. Вот снимок кода:

Интерфейс обслуживания:

[ServiceContract]
public interface IAuthenticate
{
    [OperationContract]
    [WebInvoke(BodyStyle=WebMessageBodyStyle.Bare, 
Method = "POST", UriTemplate = "/VUser",RequestFormat= WebMessageFormat.Xml ), ]
    string CreateUser(VUser user);
}

Класс Datacontract:

[DataContract]
public class VUser
{
    public VUser()
    {
    }

    [DataMember]
    public string NickName { get; set; }

    [DataMember]
    public string lName { get; set; }

    [DataMember]
    public string fName { get; set; }

    [DataMember]
    public string Email { get; set; }

    [DataMember]
    public string PhoneNumber { get; set; }

    [DataMember]
    public string Password { get; set; }

    [DataMember]
    public string Gender { get; set; }

    [DataMember]
    public int CountryCode { get; set; }
}

Класс обслуживания:

public class Authenticate : IAuthenticate
{

    #region IAuthenticate members
    public string CreateUser(Vuser user)
    {
        //processing xml for response

    }
    #endregion IAuthenticate
}

код клиента:

       Uri baseAddress = new Uri("http://localhost:8000");

        using (WebServiceHost host = new WebServiceHost(typeof(Authenticate), baseAddress))
        {
            host.Open();
            Console.WriteLine("Press any key to terminate");
            Console.ReadLine();
            host.Close();

        }

Теперь я использую fiddler для отправки запроса после host.open () и отправки запроса показала:

сообщение http://localhost:8000/Vuser/

Пользователь-агент: Fiddler Хост: localhost: 8000 длина контента: 233 тип содержимого: текст / xml

и в теле запроса:

Сэнди р Сунил sunil.r 919900101948 зима мужчина 01

но мне возвращается HTTP / 1.1 400 Bad Request. Мой вопрос заключается в том, правильно ли я передаю класс vuser методу create user или есть какой-либо другой способ отправки vuser.

Пожалуйста, помогите мне.

Ответы [ 2 ]

0 голосов
/ 25 июня 2013

Пожалуйста, укажите Пространство имен Datacontract в классе DataContract

[DataContract (Namespace = "http://xxx.xxx.xxx/Service.svc")]

и следуйте тому же в XML-файле

0 голосов
/ 30 января 2010

Это может быть проблема с сериализацией.

В сериализации используется консорктор по умолчанию, без параметров.

В C # компилятор автоматически создает конструктор по умолчанию, , за исключением , если вы создаете конструктор с параметром.

В классе Authenticate отсутствует конструктор по умолчанию, поэтому у вас будут проблемы, отправляющие его через WCF.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...