我已经尝试过我在网上研究中可以想到的所有选项,但也许我错过了一些我看不到的明显的东西。
这是我的界面定义
[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
它可以工作,我就点击了断点。
我做错了什么?
答案 0 :(得分:1)
您通过网址<>
发送错误的符号,您必须对其进行编码
http://localhost:4196/Service.svc/GetData/<myxml>somedata</myxml>