C#으로 편안한 웹 서비스를 만들었습니다. POST 메서드를 호출하면 400 개의 잘못된 요청 오류가 발생합니다. 피들러에서 내 요청을 확인하고 POST 요청이 완벽하게 괜찮습니다. 나는 내 프로그램에 무엇이 잘못된 것인지 이해하지 못한다.REST Service 400 잘못된 요청 받기
다음은 일부 코드 스 니펫입니다. 다른 코드를 필요로하는 사람이 있으면 물어보십시오.
[ServiceContract]
public interface IRead
{
[OperationContract]
[WebInvoke(UriTemplate = "GetCard", Method = "POST")]
someObject GetCard(Session session);
}
NFCSession 인터페이스
이름 세션의 INT 변수를 갖는 객체이다. 피들러 에서클라이언트 발생 POST 요청
public void GetCard()
{
string strGetCard = "http://localhost:8384/Reader/GetCard";
byte[] dataByte = GenerateNFCSession(63315152);
HttpWebRequest POSTRequest = (HttpWebRequest)WebRequest.Create(strGetCard);
POSTRequest.Method = "POST";
POSTRequest.ContentType = "application/xml;charset=UTF-8";
POSTRequest.ContentLength = dataByte.Length;
Stream POSTstream = POSTRequest.GetRequestStream();
POSTstream.Write(dataByte, 0, dataByte.Length);
HttpWebResponse POSTResponse = (HttpWebResponse)POSTRequest.GetResponse();
StreamReader reader =
new StreamReader(POSTResponse.GetResponseStream(), Encoding.UTF8);
Console.WriteLine("Response");
Console.WriteLine(reader.ReadToEnd().ToString());
}
XML 생성기
private static byte[] GenerateXML(int sessionID)
{
MemoryStream mStream = new MemoryStream();
XmlTextWriter xmlWriter = new XmlTextWriter(mStream, Encoding.UTF8);
xmlWriter.Formatting = Formatting.Indented;
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("Session");
xmlWriter.WriteStartElement("session");
xmlWriter.WriteString(sessionID.ToString());
xmlWriter.WriteEndElement();
xmlWriter.WriteEndElement();
xmlWriter.WriteEndDocument();
xmlWriter.Flush();
xmlWriter.Close();
Console.WriteLine(mStream.ToArray().ToString());
return mStream.ToArray();
}
의 Web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule,
System.Web,Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>
</system.webServer>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" faultExceptionEnabled="true"
automaticFormatSelectionEnabled="true"></standardEndpoint>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
POST 요청 XML
<?xml version="1.0" encoding="utf-8"?>
<Session>
<session>63315152</session>
</Session>
는이 오류를
The server encountered an error processing the request.
참고를 얻을 : 나는 XmlSerializer가 형식을 제공 할 때 잘 작동 속성. 하지만 나중에 JSON 요청에 대해서도 서비스가 작동하도록하고 싶습니다. 그리고 내 관점에서 명시 적으로 형식 특성을 제공 할 필요가 없습니다. 나는이 코드의 잘못된 점을 심각하게 이해하지 못한다.
얘들 아, 도와주세요!
REST API를 사용하는 경우 WCF를 그대로두고 ASP.NET 웹 API를 사용하면 더 간단합니다. –
ASP.NET MVC 4를 의미합니까? – Newbee
링크 : http://www.asp.net/web-api, Web Api는 ASP.NET MVC 4가 아니며 둘 다 같은 패키지에 있습니다. –