При развертывании приложения MVC на сервере ajax не может найти действие, но Localhost делает это - PullRequest
0 голосов
/ 11 июля 2019

У меня есть приложение MVC5.Когда я запускаю его на своем локальном хосте, все работает без ошибок.

Когда я публикую свое приложение, я переношу его в Windows Server 2016, я помещаю файлы в wwwroot в папку IIS и связываю все, чтобы создать новый сайт в IIS.Затем я запускаю веб-сайт, и он работает.Я заставляю свой код JavaScript работать, но когда я запускаю и запускаю методы «ajax», я получаю ошибку 404, и в функции я не могу найти действие моего контроллера, поэтому метод будет работать.

Вот моя действительная ошибка:

xxx.xxx.xx x.219 / Parts / DoPartBookFunc? Bookval = 8 404 (Не найдено), Не удалось загрузить ресурс: серверответил со статусом 404 (Не найдено)

Я исследовал и пробовал кучу разных вещей, но пока не повезло.Некоторые вещи, которые я пробовал:

  • @Url.action(“”,””)
  • добавление ~ впереди
  • добавление ../ впереди
  • создание глобального файла

и многое другое.Если кто-то знает, как это исправить, это было бы очень признательно.

$("#PartBook").on("change", function () {
                var selectV = $(this).val();
                var selectT = $(this).text();         
        $.ajax({
                url: '/Parts/DoPartBookFunc',
                type: 'GET',
                dataType: 'json',
                data: { bookval: selectV },
                //contentType: 'application/json; charset=utf-8',
                success: function (data) {
                    //alert("s" + data.PartNextNumber);

Вот мое решение всем!

Изменил мой URL-адрес ajax () на:

url: "@Url.Action("DoPartBookFunc", "Parts")",

 public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            /* Newly Added */ 
            routes.MapRoute(
                name: "AddNewControllerName",
                url: "AddNewControllerName/{action}/{id}",
                defaults: new { controller = "AddNewControllerName", action = "Index", id = UrlParameter.Optional }
                );

            /* Old Route */
            routes.MapRoute(
                name: "mass",
                url: "{action}/{id}",
                defaults: new { controller = "Parts", action = "Index", id = UrlParameter.Optional }
            ); 

1 Ответ

0 голосов
/ 11 июля 2019

Попробуйте удалить / из URL:

$("#PartBook").on("change", function () {
                var selectV = $(this).val();
                var selectT = $(this).text();         
        $.ajax({
                url: 'Parts/DoPartBookFunc',
                type: 'GET',
                dataType: 'json',
                data: { bookval: selectV },
                //contentType: 'application/json; charset=utf-8',
                success: function (data) {
                    //alert("s" + data.PartNextNumber);
                    ...
                    })

или попробуйте добавить это:

var RootUrl = '@Url.Content("~/")';

$.ajax({
type: "POST",
    url: RootUrl + "Parts/DoPartBookFunc",
...