asp.net MVC форма POST работает в Localhost, но не работает после публикации

HomeController.cs:

 public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Index(LoginInfo login)
        {
            if (Request.Form["Submit"] != null)
            {
                string Username = login.Username;
                string Password = login.Password;

                ViewBag.Massage = "";

                if (Username == "Admin" && Password == "123")
                {
                    ViewBag.Massage = "Login Successfull";

                    return RedirectToAction("MSISDN","UnSub");
                }
                else
                {
                    ViewBag.Massage = "Please Enter Valid Login Information";                    
                }
            }
            return View();
        }

Views / Home / Index.cshtml

<form name="myForm" action="/Home/Index"  method="post">
    <div align="center">
        <div style="color:red">@ViewBag.Massage</div>
        <br>
        <label for="Username">Username:</label>
        <input type="text" name="Username" id="Username">
        <label for="Password">Password:</label>
         <input type="password" name="Password" id="Password">
        <br>
        <input type="submit" name="Submit"value="Submit">

    </div>
</form>

Этот код прекрасно работает на моем локальном хосте. Но когда я публикую свой проект на IIS Server, он не работает. Возвращается

Ошибка сервера: 404 файл или каталог не найден.

Может быть, это противоречит моему физическому пути и запрошенному пути. Как решить эту проблему??:(

2 ответа

Решение

Мой код работает правильно после использования tilde (~) подписать перед действием. Например:

действие ="~/Home/Index"

После использования этого знака мой код работает правильно. Это уменьшает конфликты между виртуальным путем и физическим путем.

actionURL в form тег может быть неправильным:

  • Если URL для отображения и публикации данных совпадает, вы можете удалить action="/Home/Index"
  • Если вы хотите указать URL, пожалуйста, используйте action="@Url.Action("Index")"
    • Это автоматически разрешит URL.
Другие вопросы по тегам