2017-04-07 12 views
0

私は$ http.getを使用してasmx webserviceに2つのパラメータ(ユーザー名とパスワード)を渡しています。しかし、データの代わりに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

あなたは(より典型的にはASMXエンドポイントのために使用されている)System.Web.Services.Protocols.WebServiceHandlerFactoryに(通常のaspxエンドポイント用に使用される)System.Web.UI.PageHandlerFactoryを変更する必要があります。

EDITは:voidへの復帰を変更して、これをやってみてください。それが動作するかどうか

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

を参照してください。

+0

ありがとうございました。私はそれを.WebServiceHandlerFactoryに変更しようとしましたが、それでもHTMLページを返します。 –

+0

奇数:あなたのメソッドの応答フォーマットをJSONに設定していますか?おそらく '[ScriptMethod(UseHttpGet = true、ResponseFormat = ResponseFormat.Json)]'のようなものでしょう。 – Femi

+0

私はwebserviceのwebmethodのコードを追加しました –

関連する問題