HTTP POST 500 (внутренняя ошибка сервера)
Я пытаюсь вызвать веб-сервис для добавления сотрудника в базу данных sql через мое приложение AngularJS. Метод Http Get прекрасно работает в том же приложении.
Ошибка:
POST http://localhost:56330/EmployeeService.asmx/AddEmployee?EmailId=a2S@s&Fname=Rohit&Gender=Male&Lname=Sharma&Locartion=sd&MobileNumber=459401421 500 (Internal Server Error)
Когда я копирую приведенную выше ссылку в отдельный браузер, она работает.
addEmployee method not working in following code:
app.provider("searchservice", function () { this.$get = function ($http, $location) { return { fetchdata: function () { var empinfo = []; var url = "EmployeeService.asmx/GetAllEmployees"; $http.get(url).then(function (response) { angular.copy(response.data,empinfo); }, function (response) { console.log("something went wrong while fetching the data"); }); return empinfo; }, addEmployee: function (emp) { var inputdata = { Fname: emp.firstname, Lname: emp.lastname, Gender: emp.gender, MobileNumber: emp.mobileNumber, EmailId: emp.email, Locartion: emp.location } var response = $http({ method: "POST", url: "EmployeeService.asmx/AddEmployee", params: inputdata, }).then(function () { console.log("Employee Saved successfully"); $scope.allEmployees = searchservice.fetchdata(); if ($scope.allEmployees !== null) $scope.result = 'true'; else $scope.result = 'false'; }, function () { console.log("some error occured"); });; console.log(response); return response; } } } })
webserice:
namespace EmployeeApp { /// <summary> /// Summary description for EmployeeService /// </summary> [WebService] [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 EmployeeService : System.Web.Services.WebService { public string connectionstring = ConfigurationManager.ConnectionStrings["EmployeeDB"].ConnectionString.ToString(); [WebMethod] [System.Web.Script.Services.ScriptMethod(ResponseFormat = System.Web.Script.Services.ResponseFormat.Json, UseHttpGet = true)] public void AddEmployee(string Fname, string Lname, string Gender, string MobileNumber, string EmailId, string Locartion) { using (SqlConnection con = new SqlConnection(connectionstring)) { string sqlQuery = "Insert into Employee (Fname, Lname, Gender, MobileNumber,EmailId,Locartion) VALUES" + "(@Fname, @Lname, @Gender, @MobileNumber,@EmailId,@Locartion)"; con.Open(); // Console.WriteLine("" + obj.firstname); SqlCommand cmd = new SqlCommand(sqlQuery, con); cmd.Parameters.AddWithValue("@Fname", Fname); cmd.Parameters.AddWithValue("@Lname", Lname); cmd.Parameters.AddWithValue("@Gender", Gender); cmd.Parameters.AddWithValue("@MobileNumber", MobileNumber.ToString()); cmd.Parameters.AddWithValue("@EmailId", EmailId); cmd.Parameters.AddWithValue("@Locartion", Locartion); int result = cmd.ExecuteNonQuery(); if (result == 1) { //get all the employees details } con.Close(); Context.Response.Write("success"); // return obj; } } }
Что я уже пробовал:
Добавление протоколов HTTPGET,HTTPPOST в web.config:
<?xml version="1.0"?> <configuration> <connectionStrings> <add name="EmployeeDB" connectionString="Data Source=LAPTOP-4S65AVT0\SQLEXPRESS;Initial Catalog=WorkshopDB2;Integrated Security=True;Pooling=False" providerName="System.Data.SqlClient"/> </connectionStrings> <system.web> <webServices> <protocols> <add name="HttpGet"/> <add name="HttpPost"/> <add name="HttpPostLocalhost"/> </protocols> </webServices> <compilation debug="true"/> <httpHandlers> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </httpHandlers> </system.web> </configuration>
Много искал в Интернете, не находя никакого решения. пожалуйста помочь
F-ES Sitecore
Используйте вкладку Сеть инструментов браузера (f12), чтобы проверить вызов, который завершается неудачно. Если вы посмотрите на тело ответа, то, вероятно, найдете более подробную информацию о том, что пошло не так.
Muralikrishna8811
Привет,
Похоже , вы определили метод "AddEmployee" в Службе как httpGet попробуйте изменить его на метод POST в вашем обработчике службы, хотя не уверены в синтаксисе, насколько я понимаю, он отлично работает в браузере, так как принимает метод GET