私はネットでの調査から考えられるすべてのオプションを試しましたが、おそらく私には見えない明らかな何かが欠けています。
これは私のインターフェース定義です
[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
機能し、ブレークポイントに到達します。
私は何が間違っているのですか?