Пользовательский обработчик работает на Asp.NET Сервере разработки, но не на IIS 5.1?

StackOverflow https://stackoverflow.com/questions/729599

  •  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%

большое спасибо, ребята, за вашу помощь

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top