2017-04-07 82 views
0

我使用$ http.get連接到傳遞2個參數的asmx webservice:用戶名和密碼。但是它返回的是Web服務的HTML頁面而不是數據。 我錯過了什麼?angularjs - webservice返回一個html頁面,而不是數據

,這裏是我的controller.js代碼:

$scope.enterlogin = function(usern,pass) 
{ 
     loginService.getUser(usern,pass).then(function(response){ 
     console.log('response is = ' + response.data); 
     }; 
} 

這裏是我的services.js代碼:

.factory('loginService', ['$http', function($http){ 
var base_url = "http://<ipaddress of webservie>/UserService3/WebService1.asmx?op=getUserbyUsername"; 

return { 
    getUser: function(usern,pass){ 
     console.log('code side usern is = ' + usern + "" + pass); 
     return $http.get(base_url, { params: { passw: pass, uname: usern} 
}); 
    } 
} 
}]) 

我還添加這些到Web服務的web.config文件:

<webServices> 
    <protocols> 
    <add name="HttpGet"/> 
    <add name="HttpPost"/> 
    </protocols> 
</webServices> 
<httpHandlers> 
    <add verb="GET,HEAD,POST,OPTIONS" path="*.asmx" type="System.Web.UI.PageHandlerFactory" /> 
</httpHandlers> 

而這個:

<httpProtocol> 
    <customHeaders> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
    </customHeaders> 
</httpProtocol> 

,這是在web服務將WebMethod:

[WebMethod] 
    public string getUserbyUsername(string uname, string passw) 
    { 
     string cs = "Data Source =.; Initial Catalog = UsersDB; Integrated Security = True"; 
     using (SqlConnection con = new SqlConnection(cs)) 
     { 
      SqlCommand cmd = new SqlCommand("spGetUserByUsername", con); 
      cmd.CommandType = CommandType.StoredProcedure; 
      SqlParameter parameter = new SqlParameter(@"Username", uname); 
      SqlParameter parameter2 = new SqlParameter(@"Password", passw); 
      cmd.Parameters.Add(parameter); 
      cmd.Parameters.Add(parameter2); 
      User user = new User(); 
      con.Open(); 
      SqlDataReader reader = cmd.ExecuteReader(); 
      while (reader.Read()) 
      { 
       // user.Username = reader["Username"].ToString(); 
       // user.Password = reader["Password"].ToString(); 
       user.IsExisting = reader["IsExisting"].ToString(); 
       user.UserID = reader["UserID"].ToString(); 
      } 
      con.Close(); 

      return new JavaScriptSerializer().Serialize(user); 

     } 
    } 

回答

0

您可能需要更改System.Web.UI.PageHandlerFactory(通常用於ASPX終點)到System.Web.Services.Protocols.WebServiceHandlerFactory(這是更通常用於ASMX端點)。

編輯:請嘗試更改回void,然後做這個:

Context.Response.Write(new JavaScriptSerializer().Serialize(user)); 

看看是否能工程。

+0

謝謝。我試着將它改爲.WebServiceHandlerFactory,但它仍然返回一個html頁面。 –

+0

奇數:你是否將方法的響應格式設置爲JSON?有些東西可能像'[ScriptMethod(UseHttpGet = true,ResponseFormat = ResponseFormat.Json)]'(很難說沒有看看你的實現究竟出了什麼問題)。 – Femi

+0

我添加了webservice的webmethod的代碼 –

相關問題