自定义处理程序在Asp.NET开发服务器上工作但在IIS 5.1上没有?

时间:2009-04-08 11:36:55

标签: c# ajax httphandler iis-5

大家好,我有一个愚蠢的问题。

我的自定义处理程序在Asp.NET开发服务器上100%工作,但是当我尝试运行Comment / Find(通过AJAX调用找到用户)时,我将网站发布到IIS 5.1(我知道我的命名)处理程序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);

}

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:3)

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

线索在

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

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

答案 1 :(得分:3)

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

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

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

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

科林G

答案 2 :(得分:0)

问题是当我在dev上调用处理程序时。服务器我叫它谎言这个

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

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

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

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

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

并且它的工作率为100%

非常感谢你的帮助