0

我正在使用 asp.net 3.5。我已经开发了 WCF 服务。我尝试调用 WCF 服务表单 JQUERY,但我收到错误消息

服务调用失败:400 错误请求

我的代码如下:-

服务:-

[ServiceContract]
public interface IService
{
    [OperationContract]
    //[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)]
    [WebInvoke(ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, Method = "GET", BodyStyle = WebMessageBodyStyle.WrappedRequest)]
    CommandStatus getCommandStatus(string Id, string UnitNumber, string UnitType);
}

服务 :-

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class Service : IService
{
    public CommandStatus getCommandStatus(string Id, string UnitNumber, string UnitType)
    {
        CommandStatus objCommandStatus = new CommandStatus();
        CommandsBLL objCommandsBLL = new CommandsBLL();
        DataSet ds = new DataSet();
        ds = objCommandsBLL.getCommandStatus(Convert.ToInt32(Id), UnitNumber, Convert.ToInt32(UnitType));

        if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
        {
            objCommandStatus.ID = Convert.ToString(ds.Tables[0].Rows[0]["IOMH_ID"]);
            objCommandStatus.UnitType = Convert.ToString(ds.Tables[0].Rows[0]["IOMH_UnitType"]);
        }

        return objCommandStatus;
    }
}

Web.Config 文件是

    <system.serviceModel>
    <services>
      <service behaviorConfiguration="ServiceBehavior" name="Service">
        <endpoint address="" binding="wsHttpBinding" contract="IService">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="AjaxBehavior">
          <enableWebScript />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
  </system.serviceModel>

最后我的 Jquery 调用是

var ID = 10;
    var UnitNumber = '10001';
    var UnitType = 1;

    function CallService() {
       var input =
        {
                ID: "10",
                UnitNumber: "10001",
                UnitType: "1"
        };

        //alert(JSON.stringify(input));
        $.ajax({
            async: true,
            type: "GET",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            url: "http://localhost:2878/Mtel_Profiler/Service.svc/getCommandStatus",
            data: JSON.stringify(input),
            success: function (userViewModel) {
                var user = userViewModel;
                alert(user);
            },
            error: function(msg) {
                ServiceFailed(msg);
            }
        });
    }

    function ServiceSucceeded(msg)
    {
        alert('Sucess');
        return false;
    }

    function ServiceFailed(result)
    {
        alert('Service call failed: ' + result.status + '' + result.statusText);
        return false;
    }

任何人都可以帮助解决此错误。提前致谢。

4

0 回答 0