0

大家好,我遇到了一个愚蠢的问题。

我的自定义处理程序在 Asp.NET 开发服务器上 100% 工作,但是当我将站点发布到 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 - 资源不允许 Internet 信息服务

技术信息(支持人员)

* 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);
  
}

请问谁能帮帮我??

4

3 回答 3

3

在 IIS 上,并非所有调用都将由 asp.net 处理程序处理(与开发服务器 cassini 不同),除非调用以 .aspx、.ashx 等结尾。.NET isapi dll 不会处理调用。

线索在

HTTP 405 - 资源不允许 Internet 信息服务

如果文件系统中没有相应的 .ashx 文件,您还需要在 web.config 中映射处理程序。

于 2009-04-08T11:44:17.783 回答
3

确保您已允许 IIS 服务器上的扩展。开发服务器会自动为您执行此操作。

如果您打开网站的属性,然后转到主目录选项卡并单击配置按钮。

在那里尝试添加您用于处理程序指向的扩展名。将可执行文件设置为 aspnet_isapi.dll(查看标准的 .aspx 扩展名以找到它在您的计算机上的位置)并取消选中“检查文件是否存在”。

我被这件事烧了几次,这解决了问题

科林·G

于 2009-04-08T11:45:27.920 回答
0

问题是当我在开发人员上调用处理程序时。服务器我称它为like this

http.open("post", 'Comment/Rate', true);

因为在我的 web.config 中,我指示它捕获所有“评论/”网址并调用 CommentHandler.ashx 来处理它。

 <add verb="*" path="Comment/*" type="CoffeeMashup2.CommentHandler"/>

但是由于某些原因在 IIS 中它不起作用,所以我将上面的调用更改为

http.open("post", 'CommentHandler.ashx/Rate', true);

并且它的工作100%

非常感谢你们的帮助

于 2009-05-06T08:38:47.093 回答