WCF WebInvoke JSON 역 직렬화 실패-400 잘못된 요청

연금술사

WebServiceHost 내에서 호스팅되는 WCF .NET 4.0을 사용하고 있습니다. 일반적으로 클래스 내에서 정의 된 클래스 배열을 사용할 때까지 모두 작동합니다.

서버 측 기능

[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, UriTemplate = "foo")]
[OperationContract]
void Foo(FooQuery query);

클래스

[DataContract(Namespace="")]
public class FooQuery
{
    [DataMember]
    public MyFoo[] FooArray;
}

[DataContract(Namespace = "")]
public class MyFoo
{
    [DataMember]
    public string[] items;
}

고객 입장에서:

        //create object
        FooQuery myOriginalFoo = new FooQuery();
        MyFoo _myFoo = new MyFoo();
        _myFoo.items = new string[] { "one", "two" };
        myOriginalFoo.FooArray = new MyFoo[] { _myFoo };

        //serialize
        var json = new JavaScriptSerializer().Serialize(myOriginalFoo);
        string _text = json.ToString();
        //output:
        // {"FooArray":[{"items":["one","two"]}]}

        var httpWebRequest = (HttpWebRequest)WebRequest.Create("http://localhost:2213/foo");
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "POST";

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            streamWriter.Write(_text);
            streamWriter.Flush();
            streamWriter.Close();
        }

        //here server give back: 400 Bad Request.
        var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();

또한 System.Runtime.Serialization.Json.DataContractJsonSerializer를 사용하여 클래스를 조작 해 보았습니다. 서버로 보내고 webinvoke에서 400 오류를 반환 할 때까지 괜찮습니다. webInvoke가 어떻게 deserialize하는지 또는 다른 오류가 있는지 알지 못하는 이유는 무엇입니까?

연금술사

트릭을 만드는 CollectionDataContract 라는 마법 속성을 찾았습니다 .

새 컬렉션 클래스 추가 :

[CollectionDataContract(Namespace = "")]
public class MyFooCollection : List<MyFoo>
{
}

변경된 쿼리 클래스

[DataContract(Namespace="")]
public class FooQuery
{
    [DataMember]
    public /*MyFoo[]*/MyFooCollection FooArray;
}

클라이언트 코드 변경 :

MyFooCollection _collection = new MyFooCollection();
_collection.Add(_myFoo);
myOriginalFoo.FooArray = _collection; //new MyFoo[] { _myFoo };

이제 모든 변수가 직렬화되었습니다. :) 예 .. 알아내는 데 많은 시간이 걸립니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

JSON 역 직렬화-잘못된 유형

분류에서Dev

잘못된 JSON 역 직렬화

분류에서Dev

Alexa Skill 요청 역 직렬화 실패-SkillRequest 개체에 대한 JSON C #

분류에서Dev

JsonParseException : JSON 역 직렬화 실패

분류에서Dev

C # Json 역 직렬화 실패

분류에서Dev

400 잘못된 요청으로 Jersey FormDataParam이 실패 함

분류에서Dev

개체 속성이 잘못된 경우 WCF (400) 잘못된 요청

분류에서Dev

잘못된 JSON을 사용한 Spring MVC JSON 역 직렬화 (Jackson)

분류에서Dev

WCF Post 메서드, 400 잘못된 요청 반환

분류에서Dev

JSON 역 직렬화에 대한 잘못된 형식

분류에서Dev

AJAX : 400 잘못된 요청

분류에서Dev

$ .ajax 400 잘못된 요청

분류에서Dev

Angularjs 잘못된 요청 (400)

분류에서Dev

Guzzle 400 잘못된 요청

분류에서Dev

http : // localhost : 3000 / api / stuff에 대한 HTTP 실패 응답 : 400 잘못된 요청

분류에서Dev

잘못된 변수 이름으로 중첩 된 JSON 역 직렬화

분류에서Dev

오류 400-> wcf 클라이언트 측의 잘못된 요청

분류에서Dev

Spring 컨트롤러에 JSON 전달시 400 (잘못된 요청)

분류에서Dev

Afnetworking-json 게시-> 400 잘못된 요청

분류에서Dev

API 패치 메서드에서 잘못된 요청 400 반환

분류에서Dev

ObjectMapper를 사용하여 JSON에서 ZoneDateTime의 잘못된 역 직렬화

분류에서Dev

gunicorn 및 nginx로 실행되는 django : 400 잘못된 요청

분류에서Dev

Jersey에 대한 JSON 요청으로 "400 잘못된 요청"발생

분류에서Dev

AJAX 요청에서 Webmethod의 JSON 역 직렬화

분류에서Dev

JSON 역 직렬화

분류에서Dev

중첩 된 JSON의 Unity 역 직렬화

분류에서Dev

중첩 된 JSON 역 직렬화

분류에서Dev

Docker 버전 18.09.7의 경우 400 잘못된 요청으로 docker 로그인 실패, 빌드 2d0083d

분류에서Dev

400 잘못된 입력으로 인해 Google Directory API 사용자 목록 요청 실패

Related 관련 기사

  1. 1

    JSON 역 직렬화-잘못된 유형

  2. 2

    잘못된 JSON 역 직렬화

  3. 3

    Alexa Skill 요청 역 직렬화 실패-SkillRequest 개체에 대한 JSON C #

  4. 4

    JsonParseException : JSON 역 직렬화 실패

  5. 5

    C # Json 역 직렬화 실패

  6. 6

    400 잘못된 요청으로 Jersey FormDataParam이 실패 함

  7. 7

    개체 속성이 잘못된 경우 WCF (400) 잘못된 요청

  8. 8

    잘못된 JSON을 사용한 Spring MVC JSON 역 직렬화 (Jackson)

  9. 9

    WCF Post 메서드, 400 잘못된 요청 반환

  10. 10

    JSON 역 직렬화에 대한 잘못된 형식

  11. 11

    AJAX : 400 잘못된 요청

  12. 12

    $ .ajax 400 잘못된 요청

  13. 13

    Angularjs 잘못된 요청 (400)

  14. 14

    Guzzle 400 잘못된 요청

  15. 15

    http : // localhost : 3000 / api / stuff에 대한 HTTP 실패 응답 : 400 잘못된 요청

  16. 16

    잘못된 변수 이름으로 중첩 된 JSON 역 직렬화

  17. 17

    오류 400-> wcf 클라이언트 측의 잘못된 요청

  18. 18

    Spring 컨트롤러에 JSON 전달시 400 (잘못된 요청)

  19. 19

    Afnetworking-json 게시-> 400 잘못된 요청

  20. 20

    API 패치 메서드에서 잘못된 요청 400 반환

  21. 21

    ObjectMapper를 사용하여 JSON에서 ZoneDateTime의 잘못된 역 직렬화

  22. 22

    gunicorn 및 nginx로 실행되는 django : 400 잘못된 요청

  23. 23

    Jersey에 대한 JSON 요청으로 "400 잘못된 요청"발생

  24. 24

    AJAX 요청에서 Webmethod의 JSON 역 직렬화

  25. 25

    JSON 역 직렬화

  26. 26

    중첩 된 JSON의 Unity 역 직렬화

  27. 27

    중첩 된 JSON 역 직렬화

  28. 28

    Docker 버전 18.09.7의 경우 400 잘못된 요청으로 docker 로그인 실패, 빌드 2d0083d

  29. 29

    400 잘못된 입력으로 인해 Google Directory API 사용자 목록 요청 실패

뜨겁다태그

보관