我从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();
}
}
}
这里有什么问题?
答案 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
您可以使用
进行少量修改[System.Web.Script.Services.ScriptService]
,因为它表示可以从脚本调用Web服务。请参阅ScriptService documentation。<system.web>
<webServices>
<protocols>
<add name="HttpGet"/>
</protocols>
</webServices>
</system.web>
有关详细信息,请参阅此视频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
开头的路径。
/
这应该会产生正确的路径。