Я хотел создать конечную точку POX с помощью действия контроллера ASP.NET MVC 2.Я думал, что смогу использовать много работающего кода и сделать это за 15 минут.Я был неправ.Мое действие выглядит следующим образом:
[HttpPost]
[ValidateInput(false)]
public ContentResult DoSomething(string xml)
Атрибут ValidateInput необходим, поскольку в противном случае при отправке Xml в действие вы получите неприятное исключение проверки.
Код клиента:
var req = (HttpWebRequest)WebRequest.Create(endPoint);
req.Method = "POST";
req.ContentType = "text/xml";
req.Headers.Add("Accept-Encoding", "gzip,deflate,sdch");
// ...open request, read response now
Это рабочий код .Следующий запрос отправляется в конечную точку (fiddler2)
POST http://doerak/Veekijker/Service.aspx/Melding HTTP/1.1
Content-Type: text/xml
Accept-Encoding: gzip,deflate,sdch
Host: theHost
Content-Length: 2220
Expect: 100-continue
Connection: Keep-Alive
Xml=theXml
Однако, когда я удаляю заголовок «Accept-Encoding» из кода клиента, строковый параметр xml моего действия контроллера равен null.*
Запрос без заголовка accept-encoding выглядит следующим образом
POST http://doerak/Veekijker/Service.aspx/Melding HTTP/1.1
Content-Type: text/xml
Host: theHost
Content-Length: 2220
Expect: 100-continue
Xml=theXml
Как использовать действие моего контроллера, не устанавливая заголовок Accept-Encoding на клиенте?