使用XML或JSon请求的WCF休息服务提供了400个错误请求

时间:2012-12-23 14:05:20

标签: wcf rest

我已经尝试过我在网上研究中可以想到的所有选项,但也许我错过了一些我看不到的明显的东西。

这是我的界面定义

[ScriptService] 
[ServiceContract]
public interface IService
{

    [ScriptMethod(ResponseFormat = ResponseFormat.Json, UseHttpGet = true)]
    [OperationContract]
    //[FaultContract(typeof(MycustomFault))]
    [WebGet(UriTemplate = "/GetData/{Request}", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat=WebMessageFormat.Xml)]
    string GetData(string Request);

}

这是我的服务类

[ScriptService]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class Service : IService
{
    public string GetData(string Request)
    {
      //break point at code here
    }
}     

这是服务配置

   <system.serviceModel>
   <protocolMapping>
      <add scheme="http" binding="webHttpBinding"/>
    </protocolMapping>
    <behaviors>
      <endpointBehaviors>
        <behavior>
          <webHttp />
        </behavior >
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

我通过调用url来测试此服务:http://localhost:4196/Service.svc/GetData/<myxml>somedata</myxml> 当我尝试使用上面的url通过浏览器发送任何xml内容时,我收到400错误请求。它甚至没有达到喙点。但是,如果我发送纯文本,它会通过。例如:如果我像这样调用网址http://localhost:4196/Service.svc/GetData/someplaintextdatahere它可以工作,我就点击了断点。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您通过网址<>发送错误的符号,您必须对其进行编码

http://localhost:4196/Service.svc/GetData/&lt;myxml&gt;somedata&lt;/myxml&gt;