从angularjs mvc-5调用webservice

时间:2017-02-02 10:56:31

标签: angularjs web-services

我从angularjs调用我的网络服务

这是我的代码

$http.get('loginservice.asmx/validatelogin', {
                params: {
                    username: $scope.txtlogin,
                    password: $scope.txtpass
                }
            })
            .then(function (response) {
                alert('login success');
            })

当我拖放网络服务时,这是我的路径

<a href="~/loginservice.asmx">~/loginservice.asmx</a>

但是当我点击登录按钮时

我收到错误,这就是我的路径

/login/~/loginservice.asmx/validatelogin?password=123&username=minesh

错误是(无法找到资源文件)

我的网络服务

using System.Web.Services;
using System.Web.Script.Serialization;
using System.Web.Script.Services;
using System.Data.SqlClient;
using TaskManager.App_Code;

namespace MVC5TMS
{
    /// <summary>
    /// Summary description for loginservice
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class loginservice : System.Web.Services.WebService
    {


        DbFunction dbf = new DbFunction();
        Crypto cry = new Crypto();
        JavaScriptSerializer js = new JavaScriptSerializer();

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
        [WebMethod]
        [ScriptMethod(UseHttpGet =true)]
        public void validatelogin(string username, string password)
        {
            SqlCommand cmd = new SqlCommand();

            cmd.Parameters.AddWithValue("@LoginName", username);
            cmd.Parameters.AddWithValue("@Password", cry.Encrypt(password));
            cmd.Parameters.AddWithValue("@Prompt", "SELECT");

            SqlDataReader reader = dbf.ExecuteSP_Reader("User_SIDU", cmd);

            if (reader.Read())
            {
                Context.Response.Write("success");
                reader.Close();
            }
            else
            {
                Context.Response.Write("fail");
                reader.Close();
            }

            reader.Close();
        }
    }
}

这里有什么问题?

2 个答案:

答案 0 :(得分:0)

如果您使用params,请使用如下:

$http({
   url: "/Home/CallMe", 
   method: "GET",
   params: {number: 4, name: "angular"}
});

有关详细信息,请查看此答案Can not call Mvc Controller Action from AngularJs Controller with parameters

您可以使用

进行少量修改
  1. 取消注释[System.Web.Script.Services.ScriptService],因为它表示可以从脚本调用Web服务。请参阅ScriptService documentation
  2. 尝试添加: <system.web> <webServices> <protocols> <add name="HttpGet"/> </protocols> </webServices> </system.web>
  3. 有关详细信息,请参阅此视频Consuming ASP NET Web Service in AngularJS using $http

答案 1 :(得分:0)

您在$http.get的{​​{1}}页面中提供/login/的相对路径,因此这两条路径会连接到/login/~/loginservice.asmx/validatelogin?password=123&username=minesh,而正确的路径似乎是{{1} }}

尝试在请求中使用以/loginservice.asmx/validatelogin开头的路径。

/

这应该会产生正确的路径。