1

いくつかの変更を行ったところ、415 Unsupported Media Type が表示されるようになりました。更新されたコードを投稿しています。私の Web サービス インターフェイス。

サービス/IWebService.cs

    [OperationContract]
    [WebInvoke(Method = "POST",
        BodyStyle=WebMessageBodyStyle.Wrapped,
        RequestFormat=WebMessageFormat.Json,
        ResponseFormat=WebMessageFormat.Json,
        UriTemplate = "http://localhost:50571/Service/WebService.svc/hello/say")]
    string hello(Deneme deneme );

 [DataContract]
public class Deneme
{
    [DataMember]
    public string say { get; set; }
}

マイ Web サービス。Service/WebService.svc

 [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
 [AspNetCompatibilityRequirements(RequirementsMode =    AspNetCompatibilityRequirementsMode.Allowed)]
public class WebService : IWebService
{
    public string hello(Deneme deneme) {
        return deneme.say;
    }

クライアント側コード。Login.aspx で

$.ajax({
        type: 'POST',
        url: '/Service/WebService.svc/hello',
        data: { 'say': 'sdfs' },
        contentType: 'application/json; charset=utf-8',
        dataType:'json',
        success: function (s) {
            alert(s.d);
        }
    });

ウェブ設定

<system.serviceModel>
  <services>
      <service name="TETP.Service.WebService">
          <endpoint address=""
            behaviorConfiguration=""
            binding="basicHttpBinding"
            contract="TETP.Service.IWebService" />
      </service>
  </services>
<behaviors>
  <serviceBehaviors >
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true" />
<client>
  <endpoint address="http://localhost:50571/Service/WebService.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IWebService" contract="TETP.Service.IWebService" name="BasicHttpBinding_IWebService" />
</client>

以前は 400 Bad Request エラーが発生していました。415 Unsupported Media Type エラーが表示されます よろしくお願いします。

4

1 に答える 1

0

データリクエストには、あなたが試したものとは異なる引用符が必要かもしれないと思いますが、よくわかりません. データをデバッグする呼び出しの前に、データのアラートを追加することをお勧めします。下記参照..

var mData = "{userName:'" + $('#usernametxtbx').val() + "',password:'" + $('#passwordtxtbx').val() + "'}";
alert(mData);
$.ajax({
        type: 'GET',
        url: 'Service/WebService.svc/Login',
        data:{userName:$('#usernametxtbx').val(),password:$('#passwordtxtbx').val()},
        dataType: 'application/json; content=utf-8',
        contentType: 'json',
        success: function (res) {
        if(res.d == true)
            window.location.replace(ResolveUrl('Default.aspx'));
            else
                window.location.replace(ResolveUrl('Login.aspx'));
        }
    });
于 2013-07-28T01:00:39.617 に答える