0

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

这是我的接口定义

[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 错误请求。它甚至没有达到临界点。但是,如果我发送纯文本,它会通过。例如:如果我像这样调用 url,http://localhost:4196/Service.svc/GetData/someplaintextdatahere它会起作用并且我会遇到断点。

我究竟做错了什么?

4

1 回答 1

1

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

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

于 2012-12-23T14:15:10.410 回答