首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从angularjs mvc-5调用webservice

从angularjs mvc-5调用webservice
EN

Stack Overflow用户
提问于 2017-02-02 10:56:31
回答 2查看 81关注 0票数 0

我从angularjs打电话给我的web服务

这是我的密码

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

这是我拖放web服务时的路径。

代码语言:javascript
复制
<a href="~/loginservice.asmx">~/loginservice.asmx</a>

但是当我点击登录按钮

我遇到了错误,这就是我的道路

代码语言:javascript
复制
/login/~/loginservice.asmx/validatelogin?password=123&username=minesh

错误是(找不到资源文件)

我的web服务

代码语言:javascript
复制
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();
        }
    }
}

这里怎么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-02 12:59:59

您在$http.get中从一个具有/login/的页面提供了一个相对路径,因此这两个路径连接到/login/~/loginservice.asmx/validatelogin?password=123&username=minesh中,而正确的路径似乎是/loginservice.asmx/validatelogin

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

$http.get('/loginservice.asmx/validatelogin',...)

这应该会导致正确的路径。

票数 0
EN

Stack Overflow用户

发布于 2017-02-02 12:49:03

如果您使用的是params,请如下所示:

代码语言:javascript
复制
$http({
   url: "/Home/CallMe", 
   method: "GET",
   params: {number: 4, name: "angular"}
});

有关更多详细信息,请参阅以下答案不能调用具有参数的AngularJs控制器的Mvc控制器动作

有几处你可以做的修改

  1. 取消注释[System.Web.Script.Services.ScriptService],因为它指示可以从脚本调用Web服务。请参考ScriptService文档
  2. 尝试添加:<system.web> <webServices> <protocols> <add name="HttpGet"/> </protocols> </webServices> </system.web>

有关更多细节,请参见此视频在AngularJS中使用$http使用ASP.NETWeb服务

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42000358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档