我已经尝试了我在网上研究中能想到的所有选项,但也许我错过了一些我看不到的明显东西。
这是我的接口定义
[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
它会起作用并且我会遇到断点。
我究竟做错了什么?