如何在键/值对中知道wcf服务

时间:2014-05-26 11:39:39

标签: javascript asp.net

//IService.cs

[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)]
String CheckAuth(String AccountID, String Password);

//Service.cs

  public String CheckAuth(String AccountID, String Password)
{

   String message="";

    string StrCon = @"my conn string";
    DataTable dt = new DataTable();
    SqlConnection con = new SqlConnection(StrCon);
    string qry = "select * from Account where AccountID='" + AccountID + "' and Password='"+Password+"'";
    con.Open();
    SqlCommand cmd = new SqlCommand(qry, con);
    SqlDataAdapter adp = new SqlDataAdapter(cmd);
    adp.Fill(dt);
    if (dt.Rows.Count > 0)
    {
        message = "Authorized";

    }
    else
    {
        message = "unauthorized";
    }
    con.Close();


    return message;
}

我想知道变量d:代表什么,如何将d:更改为Message:.. ??

我需要一些建议,谢谢..

//GETTING output 
{
d: "Authorized"
}

//expected output
{
Message: "Authorized"
}

我是wcf的新手,所以如果我得到可靠的建议会有所帮助 谢谢..

1 个答案:

答案 0 :(得分:0)

变量d出于security原因。 但是,您始终可以返回object而不是string

public object CheckAuth(String AccountID, String Password)
{
    // .. snip

    return new {
       Message = message
    };
}

如果你这样打电话给你的服务,它应该返回类似

的内容
{ 
    "d" : {
       "Message": "Authorized"
    }
}

不确定你在前端使用了什么,如果你使用jQuery,你可以围绕ajax函数做一个包装:

function doAjax(url, data, cb) {
    $.ajax({
       url: url,
       data: data,
       success: function(data) {
          cb(data.d);
       }
    });
}

并使用您新定义的函数,如下所示:

doAjax('/CheckAuth', yourDataObj, function result(data) {
    console.log(data.Message);
});