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 に答える