Сбой метода POST службы WCF в Fiddler - PullRequest
6 голосов
/ 01 сентября 2011

Я использую WCF Restservice для аутентификации пользователя.У меня есть метод POST и отлично работает с использованием jquery, но не проходит тест Fiddler.Я получаю 415 неподдерживаемых типов носителей.

Вот мой код

[OperationContract]
    [WebInvoke(Method = "POST", UriTemplate = "Login", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    public string Login(string userName, string password)
    {
        string valid;

        // Log in user
        int authenticatedId = AuthenticateManager.Authenticate(userName, password);
        if (authenticatedId != -1)
        {
            valid = "Welcome " + userName + "!";
        }
        else
        {
            valid = "Login failed!";
        }

        return valid;
    }

Это то, что я передаю в теле Fiddler

[{ "userName":"dusshyi", 
   "password":"subram1" }]

Это то, что генерирует скрипач

 <HTML><HEAD><STYLE type="text/css">#content{ FONT-SIZE: 0.7em; PADDING-BOTTOM: 2em; MARGIN-LEFT: 30px}BODY{MARGIN-TOP: 0px; MARGIN-LEFT: 0px; COLOR: #000000; FONT-FAMILY: Verdana; BACKGROUND-COLOR: white}P{MARGIN-TOP: 0px; MARGIN-BOTTOM: 12px; COLOR: #000000; FONT-FAMILY: Verdana}PRE{BORDER-RIGHT: #f0f0e0 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #f0f0e0 1px solid; MARGIN-TOP: -5px; PADDING-LEFT: 5px; FONT-SIZE: 1.2em; PADDING-BOTTOM: 5px; BORDER-LEFT: #f0f0e0 1px solid; PADDING-TOP: 5px; BORDER-BOTTOM: #f0f0e0 1px solid; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e5e5cc}.heading1{MARGIN-TOP: 0px; PADDING-LEFT: 15px; FONT-WEIGHT: normal; FONT-SIZE: 26px; MARGIN-BOTTOM: 0px; PADDING-BOTTOM: 3px; MARGIN-LEFT: -30px; WIDTH: 100%; COLOR: #ffffff; PADDING-TOP: 10px; FONT-FAMILY: Tahoma; BACKGROUND-COLOR: #003366}.intro{MARGIN-LEFT: -15px}</STYLE>
<TITLE>Service</TITLE></HEAD><BODY>
<DIV id="content">
<P class="heading1">Service</P>
<BR/>
<P class="intro">Endpoint not found.</P>
</DIV>
</BODY></HTML>

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

Ответы [ 3 ]

13 голосов
/ 01 сентября 2011

Вы установили тип содержимого запроса на application/json в редакторе тела запроса Fiddler?

enter image description here

3 голосов
/ 21 января 2013

У меня была такая же проблема этим утром ...

Что для меня исправило, так это щелкнуть вкладку «Композитор», а затем добавить следующее в раздел «Запрос заголовков»:

Content-Type: application/x-www-form-urlencoded

Без этой строки я заметил, что журнал показывает, что он пытается вызвать мою службу REST с типом содержимого "text / html", и служба не будет вызвана.

Это произойдет , даже произойдет, если я добавлю строку:

Content-Type: application/json

Однако после добавления строки " Content-Type: application / x-www-form-urlencoded " Fiddler теперь будет вызывать службу с типом контента " application / json", и веб-сервис был вызван правильно. Странно ...

Я создал полный обзор создания веб-службы JSON WCF и его тестирования с помощью Fiddler на следующей странице:

http://mikesknowledgebase.com/pages/Services/WebServices-Page1.htm

1 голос
/ 08 апреля 2013

Fiddler Web Debugger: раздел Composer; Настройки

Parsed
POST,../Service.svc/Login,HTTP/1.1

Request Header:
User-Agent: Fiddler
Content-Type: application/json;charset=UTF-8
Host: localhost:15021
Content-Length: 43

Request Body:
{"username":"ABC","password":"pwd"}

и затем выполнить

...