Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我用mvc.net编写了一个web api,但是我得到了一个404错误_Javascript_Asp.net Mvc - Fatal编程技术网

Javascript 我用mvc.net编写了一个web api,但是我得到了一个404错误

Javascript 我用mvc.net编写了一个web api,但是我得到了一个404错误,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我的脚本如下所示 $(function () { $(".formSubmit").click(function () { var cName = $('#cName').val(); var cSurname = $('#cSurname').val(); var cEmail = $('#cEmail').val(); var cMessage = $('#cM

我的脚本如下所示

$(function () {
        $(".formSubmit").click(function () {
            var cName = $('#cName').val();
            var cSurname = $('#cSurname').val();
            var cEmail = $('#cEmail').val();
            var cMessage = $('#cMessage').val();
            console.log(cMessage);
            console.log(cEmail);
            console.log(cSurname);
            console.log(cName);
            if (cName != null && cName != '' && cSurname != null && cSurname != '' && cEmail != null && cEmail != '' && cMessage != null && cMessage != '') {
                $.ajax({
                    type: "GET",
                    url: "/api/contactusapi/" + cName + "/" + cSurname + "/" + cEmail + "/" + cMessage + "/?",
                    contentType: "json",
                    dataType: "json",
                    success: function (data) {
                        if (data != null) {

                        }
                    },
                    error: function (xhr) {
                        alert(xhr.responseText);
                    }
                });
            }
        });
    });
namespace iskorumacom.Controllers
{
    public class ContactUsApiController : ApiController
    {
        [HttpGet]
        public int Get(string cName, string cSurname, string cEmail, string cMessage)
        {
            try
            {
                using (Data.DataClassesDataContext dc = new Data.DataClassesDataContext())
                {
                string cHTML =
                              "<h3></h3>" +
                              "<b>Ad:</b> " + cName + "<br />" +
                              "<b>Soyad :</b> " + cSurname + "<br />" +
                              "<b>e-Mail :</b> " + cEmail + "<br />" +
                              "<b>Mesaj :</b> " + cMessage;

                using (MailMessage MailMessageLocal = new MailMessage())
                {
                    MailMessageLocal.From =
                        new MailAddress("m@majorworx.com", cName + " " + cSurname, System.Text.Encoding.UTF8);


                    MailMessageLocal.To.Add("m@majorworx.com");

                    MailMessageLocal.Subject = "İletişim Formu Formu";
                    MailMessageLocal.IsBodyHtml = true;
                    MailMessageLocal.BodyEncoding = System.Text.Encoding.UTF8;
                    MailMessageLocal.Body = cHTML;
                    MailMessageLocal.Priority = MailPriority.High;

                    using (SmtpClient SmtpClientLocal = new SmtpClient())
                    {
                       
                        return -1;

                    }
                }


            }
        }
        catch
        {
            return 0;
        }
    }
  }
}
我的“contactusapi”api如下所示

$(function () {
        $(".formSubmit").click(function () {
            var cName = $('#cName').val();
            var cSurname = $('#cSurname').val();
            var cEmail = $('#cEmail').val();
            var cMessage = $('#cMessage').val();
            console.log(cMessage);
            console.log(cEmail);
            console.log(cSurname);
            console.log(cName);
            if (cName != null && cName != '' && cSurname != null && cSurname != '' && cEmail != null && cEmail != '' && cMessage != null && cMessage != '') {
                $.ajax({
                    type: "GET",
                    url: "/api/contactusapi/" + cName + "/" + cSurname + "/" + cEmail + "/" + cMessage + "/?",
                    contentType: "json",
                    dataType: "json",
                    success: function (data) {
                        if (data != null) {

                        }
                    },
                    error: function (xhr) {
                        alert(xhr.responseText);
                    }
                });
            }
        });
    });
namespace iskorumacom.Controllers
{
    public class ContactUsApiController : ApiController
    {
        [HttpGet]
        public int Get(string cName, string cSurname, string cEmail, string cMessage)
        {
            try
            {
                using (Data.DataClassesDataContext dc = new Data.DataClassesDataContext())
                {
                string cHTML =
                              "<h3></h3>" +
                              "<b>Ad:</b> " + cName + "<br />" +
                              "<b>Soyad :</b> " + cSurname + "<br />" +
                              "<b>e-Mail :</b> " + cEmail + "<br />" +
                              "<b>Mesaj :</b> " + cMessage;

                using (MailMessage MailMessageLocal = new MailMessage())
                {
                    MailMessageLocal.From =
                        new MailAddress("m@majorworx.com", cName + " " + cSurname, System.Text.Encoding.UTF8);


                    MailMessageLocal.To.Add("m@majorworx.com");

                    MailMessageLocal.Subject = "İletişim Formu Formu";
                    MailMessageLocal.IsBodyHtml = true;
                    MailMessageLocal.BodyEncoding = System.Text.Encoding.UTF8;
                    MailMessageLocal.Body = cHTML;
                    MailMessageLocal.Priority = MailPriority.High;

                    using (SmtpClient SmtpClientLocal = new SmtpClient())
                    {
                       
                        return -1;

                    }
                }


            }
        }
        catch
        {
            return 0;
        }
    }
  }
}

您是从ApiController继承的控制器,但您的路由是为MVC控制器配置的

  • 如果要使用
    ApiController
    ,请使用
    .maphttprote
    方法配置路由
  • 如果要使用
    .MapRoute
    方法进行配置,请从
    控制器继承控制器,而不是从
    ApiController
    继承控制器
  • 此外,在url中,您正在主机和端口之后添加
    /api
    。使用
    .maphttprote
    定义路由时,将在routeTemplate中定义
    /api
    ,如下所示-

     config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
    
    namespace iskorumacom.Controllers
    {
       public class ContactUsApiController : ApiController
       {
          [HttpGet]          
          [Route("api/contactus/{cName}/{cSurName}/{cEmail}/{cMessage}")]
          public int Get(string cName, string cSurname, string cEmail, string cMessage) {
             // Your code
          }
       }
    }
    
    在您的情况下,将WebApiConfig配置为-

      config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
    
    现在使用url
    /api/contactusapi?cName=myname&cSurname=myurname&cEmail=mymail&cMessage=mymessage调用api

    或者,您也可以将
    Route
    属性添加到您的操作方法中,如下所示-

     config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
    
    namespace iskorumacom.Controllers
    {
       public class ContactUsApiController : ApiController
       {
          [HttpGet]          
          [Route("api/contactus/{cName}/{cSurName}/{cEmail}/{cMessage}")]
          public int Get(string cName, string cSurname, string cEmail, string cMessage) {
             // Your code
          }
       }
    }
    
    现在将您的API称为-
    /API/contactus/myname/myurname/mymail/mymessage
    WEBAPİ.CONFİG:

    public static void Register(HttpConfiguration config)
            {
                config.MapHttpAttributeRoutes();
    
                config.Routes.MapHttpRoute(
                    name: "DefaultApi",
                    routeTemplate: "api/{controller}/{id}/{id2}/{id3}/{id4}/{id5}",
                    defaults: new {
                        id = RouteParameter.Optional,
                        id2 = RouteParameter.Optional,
                        id3 = RouteParameter.Optional,
                        id4 = RouteParameter.Optional,
                        id5 = RouteParameter.Optional
                    }
                );
            }
    

    根据@Muzaffer-Galata评论,您应该修改您的url以匹配您的端点,请参见下面的代码片段

    $(function () {
        $(".formSubmit").click(function () {
            var cName = $('#cName').val();
            var cSurname = $('#cSurname').val();
            var cEmail = $('#cEmail').val();
            var cMessage = $('#cMessage').val();
            console.log(cMessage);
            console.log(cEmail);
            console.log(cSurname);
            console.log(cName);
            //change below
            if (cName != null && cName != '' && cSurname != null && cSurname != '' && cEmail != null && cEmail != '' && cMessage != null && cMessage != '') {
                $.ajax({
                    type: "GET",
                    url: "/api/ContactUsApi/Get?cName=" + cName + "&cSurname=" + cSurname + "&cEmail=" + cEmail + "&cMessage=" + cMessage,
                    contentType: "json",
                    dataType: "json",
                    success: function (data) {
                        if (data != null) {
    
                        }
                    },
                    error: function (xhr) {
                        alert(xhr.responseText);
                    }
                });
            }
        });
    });
    

    我们通过@Nikhil Patil解决了这个问题

    我的url必须如下所示:

    url :"/api/contactusapi/" + cName + "/" + cSurname + "/" + cEmail + "/" + cMessage
    

    谢谢你的评论和帮助

    您不应将代码与登录凭据共享。小心点,谢谢。我没有注意到Ajax url有一个
    api
    值。尝试将您的
    路由url
    更改为
    “api/{controller}/{action}/{id}”
    ,您可以使用工具(如Postman)更轻松地测试您的api。”/api/contactusapi/get/“+cName+”/“+cSurname+”/“+cEmail+”/“+cMessage+”/?“喜欢吗?”?已尝试,但返回相同的错误尝试:
    url:“/api/ContactUsApi/Get?cName=“+cName+”&cSurname=“+cSurname+”&cEmail=“+cEmail+”&cMessage=“+cMessage,
    谢谢,我更改了route.config,但返回错误,因为我已经在webapi.config中定义了defaultapi。您可以发布RouteConfig和webapConfig吗?您也在使用ApiController或Controller?我在使用apicontroller@Melek,如果您使用ApicController,则使用.MapHttpRoute tin WebApiConfig来配置路由(此处使用名称为'DefaultApi',保持.MapRoute在RouteConfig中的状态(此处使用名称为'Default')).I gues我的路由和webapi的代码是正确的,因为我以前使用过这些配置,它可以工作,但现在我在本地工作。你认为错误可能是由此引起的吗?这应该可以工作,但绝对不是你应该做的。我尝试过,但不幸的是没有工作