function hook(_userid) {
    var url = 'MyAsyncHandler.ashx?sessionId=' + _userid;
    var request = getRequestObject();    request.onreadystatechange = function () {
        try {            if (request.readyState == 4) {
                if (request.status == 200) {
                    alert("收到信息:" + request.responseText);                    // immediately send a new request to tell the async handler that the client is 
                    // ready to receive new messages;
                    hook();
                }
                else {
                    alert("收到信息:" + request.responseText);
                }
            }
        }
        catch (e) {
            alert("Error: " + e.message);
        }
    };    request.open('POST', url, true);
    request.send(null);
}
这个是Home/Index页面的JavaScript函数,
其中的var url = 'MyAsyncHandler.ashx?sessionId=' + _userid;这里的地址不对
错误信息:
“/”应用程序中的服务器错误。
说明: HTTP 404。您正在查找的资源(或者它的一个依赖项)可能已被移除,或其名称已更改,或暂时不可用。请检查以下 URL 并确保其拼写正确。[HttpException]: 在控制器“MvcDesktop.Controllers.HomeController”上未找到公共操作方法“MyAsyncHandler.ashx”。
这个ashx文件是在项目根目录,访问路径应该怎样写?

解决方案 »

  1.   

    http://stackoverflow.com/questions/636179/how-to-use-generic-handlers-ashx-in-asp-net-mvc
      

  2.   

    1.如果只是要访问一个ashx文件的话,放在Views以外的文件夹,通过正常路径访问即可如果是Controller里要转向可以用return Redirect("/Folder/file.ashx");2.如果你想所有的Url变成*.ashx,那么在Web.Config中配置相应的Handler(参见里面.mvc的配置)然后在Global.asax中更改MapRoute中的规则为{controller}/{action}.ashx
      

  3.   

    放到Views外部 和webfrom访问方式一样
    另外 要注意路径   ../file.ashx  
    默认会加上ACTION/file.ashx  
      

  4.   

    MyAsyncHandler.ashx的相对路径错误了