angularjs - webservice返回一个html页面而不是数据

时间:2017-04-07 02:18:41

标签: asp.net angularjs ionic-framework asmx

我正在使用$ http.get连接到传递2个参数的asmx webservice:用户名和密码。但是它返回Web服务的html页面而不是数据。 我错过了什么吗?

这是我的controller.js代码:

NTPUDPClient timeClient = new NTPUDPClient();
InetAddress inetAddress = InetAddress.getByName("time1.google.com");
TimeInfo timeInfo = timeClient.getTime(inetAddress);
long returnTime = timeInfo.getMessage().getOriginateTimeStamp().getTime();
long returnTime2 = timeInfo.getReturnTime();
Date current = new Date(returnTime);
Date current1 = new Date(returnTime2);
Log.i("actualtime", current.toString()); //it give me UTC+6
Log.i("actualtime",current1.toString()); //it give me UTC+6

这是我的services.js代码:

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

我还将这些添加到webservice的web.config文件中:

.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} 
});
    }
}
}])

而且:

 <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>

这是webservice中的webmethod:

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

1 个答案:

答案 0 :(得分:0)

您可能需要将System.Web.UI.PageHandlerFactory(通常用于aspx端点)更改为System.Web.Services.Protocols.WebServiceHandlerFactory(更常用于asmx端点)。

编辑:尝试将返回值更改为void然后执行此操作:

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

看看是否有效。

相关问题