FTP развернул веб-сайт Microsoft MVC3. Протокол POST не работает. GET протокол работает - PullRequest
0 голосов
/ 15 марта 2012

Я занимаюсь разработкой веб-сайта с использованием Microsoft MVC3 и создал его на основе стандартного шаблона приложения MVC3.Он обращается к внешней базе данных и работает на локальном хосте.

Я развернул его на общем сервере, который я арендую у storminternet через инструмент публикации, используя метод ftp (storminternet еще не поддерживает веб-развертывание), и он работает хорошо.Он получает доступ к базе данных в порядке и получать запросы работают нормально.

Однако любая форма, отправляющая по протоколу POST, возвращает ошибку 404 страницы не найдена (это относится к действиям, в которых я утверждал [HttpPost]).

Интернет Storm уверяет меня, что POST и GETразрешено по умолчанию, и поскольку служба поддержки не является разработчиком, я не уверен, к кому обратиться.У меня нет отличного понимания web.config, хотя я могу читать и понимать xml и видеть, что происходит, читая и гугляя.Я попытался добавить протоколы в корневой web.config и думаю, что, возможно, я лаю не на том дереве.

Кто-нибудь еще сталкивался с этой проблемой или кто-нибудь знает, как мне помочь?

Чтобы повторить мою ошибку, мой сайт находится здесь ... 213.229.125.117/$sitepreview/ase-limited.com/Dev (извините, он не синий. Доллар разбирается на% что-то)

и самый быстрый путь к POST-запросу - нажать «Добавить здание» в верхней части левой части, а затем нажать «Сохранить» в верхней части диалогового окна.

Любая помощь будет с благодарностьюполучено.Я застрял на этом в течение нескольких дней без удачи.

С наилучшими пожеланиями Ник

СТОП-ПРЕСС-СТОП-ПРЕСС-СТОП-ПРЕСС-СТОП-ПРЕСС-СТОП-ПРЕСС-СТОП-ПРЕСС-STOP-PRESS-

Оказалось, что это известная проблема с sitepreview.При переключении на нужный домен все отсортировано.

1 Ответ

1 голос
/ 15 марта 2012

Я заметил, что у вас есть 404 ошибки JavaScript при выполнении ваших запросов AJAX.Например, у вас есть запрос:

http://213.229.125.117/$sitepreview/ase-limited.com/BuildingManager/Employees/2

вместо:

http://213.229.125.117/$sitepreview/ase-limited.com/Dev/BuildingManager/Employees/2

Обратите внимание, что /Dev отсутствует.Это потому, что в ваших javascript-кодах вы жестко закодировали свои URL-адреса вместо того, чтобы использовать их для их генерации.Например, вы написали что-то вроде этого:

$.ajax({
    url: '/BuildingManager/Employees/2',
    ....
});

, который отлично работает на localhost, потому что у вас нет имени виртуального каталога, но не работает при развертывании на вашем сервере, потому что теперь правильный путь:

$.ajax({
    url: '/Dev/BuildingManager/Employees/2',
    ....
});

По этой причине вы абсолютно никогда не должны жестко кодировать URL-адреса, подобные этому.

И когда я пытаюсь отправить POST, форма в пытается отправить на http://213.229.125.117/Dev/BuildingManager/SaveBuilding, что выглядит оченьстранный URL, так как отсутствует все начало.Еще раз: никогда не используйте жесткие ссылки.Всегда используйте url helpers.

...