Пользовательский обработчик работает на Asp.NET Сервере разработки, но не на IIS 5.1?
-
05-09-2019 - |
Вопрос
Привет, ребята, у меня глупая проблема.
Мой пользовательский обработчик работает на 100% на сервере разработки Asp.NET но когда я публикую сайт в IIS 5.1 всякий раз, когда я пытаюсь запустить Comment / Find (который находит пользователя с помощью AJAX-вызова) (я знаю имя моего обработчика sux!!!:)
Я получаю эту ошибку:
Страница не может быть отображена Страница, которую вы ищете, не может быть отображена из-за неправильного адреса страницы.
Пожалуйста, попробуйте следующее:
* If you typed the page address in the Address bar, check that it is entered correctly.
* Open the home page and then look for links to the information you want.
HTTP 405 - Ресурс не разрешен Информационные службы Интернета
Техническая информация (для вспомогательного персонала)
* More information:
Microsoft Support
Мой код для вызова AJAX таков:
function findUser(skip, take) {
http.open("post", 'Comment/FindUser', true);
//make a connection to the server ... specifying that you intend to make a GET request
//to the server. Specifiy the page name and the URL parameters to send
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader('Criteria', document.getElementById('SearchCriteria').value);
http.setRequestHeader("Skip", skip);
http.setRequestHeader("Take", take);
http.setRequestHeader("Connection", "close");
//display loading gif
document.getElementById('ctl00_ContentPlaceHolder1_DivUsers').innerHTML = 'Loading, Please Wait...<br /><img src="Images/loading.gif" /><br /><br />';
//assign a handler for the response
http.onreadystatechange = function() { findUserAction(); };
//actually send the request to the server
http.send(null);
}
Пожалуйста, кто-нибудь может мне помочь??
Решение
Убедитесь, что вы разрешили это расширение на сервере IIS.Сервер разработки делает это автоматически за вас.
Если вы откроете свойства веб-сайта, затем перейдите на вкладку Домашний каталог и нажмите кнопку настройка.
Там попробуйте добавить расширение, которое вы используете для указания обработчика.Установите для исполняемого файла значение aspnet_isapi.dll (посмотрите на стандартное расширение .aspx, чтобы найти, где оно находится на вашем компьютере) и снимите флажок "Проверить, что файл существует".
Я был обожжен этим пару раз, и это решило проблему
Колин Джи
Другие советы
В IIS не все вызовы будут обрабатываться обработчиком asp.net (в отличие от cassini, сервера разработки), если только вызов не заканчивается в .aspx, .ashx и т.д..NET isapi dll не будет обрабатывать вызов.
Ключ к разгадке кроется в
HTTP 405 - Ресурс, не разрешенный Информационным службам Интернета
Вам также нужно будет сопоставить обработчик в web.config, если в файловой системе нет соответствующего файла .ashx.
Проблема заключалась в том, что когда я вызывал обработчик на dev.сервер, который я называл примерно так
http.open("post", 'Comment/Rate', true);
потому что в моем web.config я поручил ему перехватывать все "Comment /" URL-адреса и вызывать CommentHandler.ashx для их обработки.
<add verb="*" path="Comment/*" type="CoffeeMashup2.CommentHandler"/>
Однако по какой-то причине в IIS это не сработало, поэтому я изменил приведенный выше вызов на
http.open("post", 'CommentHandler.ashx/Rate', true);
и это сработало на 100%
большое спасибо, ребята, за вашу помощь