Amu Kulkarni Ответов: 0

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

0 Ответов