繁体   English   中英

发布请求期间未击中Web Api控制器

[英]Web Api Controller not hitting during post request

这是我的代码,我使用Jquery Ajax将数据从一页传递到另一页。 提供数据时没有命中。

$("#button").click(function () {
            var test = $("#name").val();
            var test1 = $("#username").val();
            var test2 = $("#email").val();
            var test3 = $("#pwd").val();
            var data1 = {
                name: test,
                username: test1,
                email: test2,
                password:test3
            }
            alert("the value is" + test + "" + test1 + "" + test2 + "" + test3);
            $.ajax({
                type: 'POST',
                url: 'http://localhost:54150/api/Login',
                data:data1,
                contentType: 'application/json;charset=utf-8',
                success: function (result) {
                    alert('Data Saved Successfully');
                },
                error: function () {
                    alert("Bad...Really bad");
                }
            });
        });

和我的控制器

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.UI.WebControls;
using AbiApp.Models;

namespace AbiApp.Controllers
{
    public class LoginController : ApiController
    {
        String connStr = System.Configuration.ConfigurationManager.ConnectionStrings["CS"].ConnectionString;
        [System.Web.Http.AcceptVerbs("GET", "POST")]
        [System.Web.Http.HttpPost]

        public void Post([FromBody]login loginmodel)
        {
            try
            {
                using (SqlConnection df = new SqlConnection(connStr))
                {
                    using (SqlCommand de = new SqlCommand())
                    {
                        de.CommandType = System.Data.CommandType.StoredProcedure;
                        de.CommandText = "StoreImageDetails";
                        de.Connection = df;
                        de.Parameters.Add(new SqlParameter("@name", loginmodel.name));
                        de.Parameters.Add(new SqlParameter("@username", loginmodel.username));
                        de.Parameters.Add(new SqlParameter("@email", loginmodel.email));
                        de.Parameters.Add(new SqlParameter("@password", loginmodel.password));
                        df.Open();
                        var dt = de.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception ed)
            {
                //ed+Message;    
            }
        }
    }
}

从Jquery Ajax调用时没有命中请检查代码,并找到错误

您的路由似乎有问题。 您可以删除

[System.Web.Http.AcceptVerbs("GET", "POST")]

并如下使用属性路由

[Route("api/Login")]
public void Post([FromBody]login loginmodel)
        {
            try
            {
                using (SqlConnection df = new SqlConnection(connStr))
                {
                    using (SqlCommand de = new SqlCommand())
                    {
                        de.CommandType = System.Data.CommandType.StoredProcedure;
                        de.CommandText = "StoreImageDetails";
                        de.Connection = df;
                        de.Parameters.Add(new SqlParameter("@name", loginmodel.name));
                        de.Parameters.Add(new SqlParameter("@username", loginmodel.username));
                        de.Parameters.Add(new SqlParameter("@email", loginmodel.email));
                        de.Parameters.Add(new SqlParameter("@password", loginmodel.password));
                        df.Open();
                        var dt = de.ExecuteNonQuery();
                    }
                }
            }
            catch (Exception ed)
            {
                //ed+Message;    
            }
        }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM