• IIS7中Ajax.AjaxMethod无效的原因及解决方法


    使用Ajax.AjaxMethod方法在asp.net的服务器下一切正常,用iis的时候,js中总是cs类找不到,具体的解决方法如下,遇到类似情况的朋友可以参考下

    最近做用Ajax.AjaxMethod方法的时候,在asp.net的服务器下一切正常,用iis的时候,js中总是cs类找不到,我就郁闷了,折腾了大半天,终于找到错误原因了。

    因为我发布网站用的是iis7,所以在web.config位置文件中<system.webServer><handlers>></handlers><system.webServer>里加入<add name="AjaxMethod" type="Ajax.PageHandlerFactory, Ajax" verb="POST,GET" path="ajax/*.ashx" />标签。

    我的问题就是由于没有注意到iis版本问题,导致的。。。悲了个剧!

    现在将整个方法要注意的都写下来,也方便以后再看,希望的的遭遇能让碰到同样错误的人看到,省下一点宝贵的时间,毕竟生命诚可贵吗,少费点神,少掉几根毛,哈哈。。。

    直接在网上找篇全面的,别骂我抄袭。。。

    使用AjaxMethod要满足一下几点:
    1、如果还没有ajax.dll文件,就先下载一个来
    2、将ajax.dll添加到项目引用中:在VS的解决方案资源管理器中右键点击项目名称--“添加项目引用”--浏览,找到ajax.dll确定
    3、webCofig中<httpHandlers>加上<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/>节点
    如果是IIS7,则需要在<system.webServer></system.webServer>里加上<add name="ajax" verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
    在CS程序中加上

    复制代码 代码如下:

    protected void Page_Load(objectsender,EventArgse)
    {
    Ajax.Utility.RegisterTypeForAjax(typeof(ClassName));//ClassName是这个CS文件的类名
    }


    编写CS方法,方法前加上[Ajax.AjaxMethod()],
    如果要使AjaxMethod里面能调用session,写成:[Ajax.AjaxMethod(HttpSessionStateRequirement.Read)] ,
    如:

    复制代码 代码如下:

    [Ajax.AjaxMethod()]
    public string GetAddress(string UserID)
    {
    string Address="";
    //do somthing to get the address here
    return Address;
    }


    注意方法要写成public,否则在JS里调用的时候会提示“不支持此属性或方法”

    4、确保页面中有<form runat="server"></form>标签。

    5、ASPX的JAVASCRIPT中调用时加上类名 ,如:
    var address = ClassName.GetAddress('123').value;

    最后补上一句  如果做项目的时候用的网站发布的模式一定要一样  本地和服务器上面不一样这个也会导致发布失败的

  • 相关阅读:
    【BZOJ1053】[HAOI2007]反素数
    【BZOJ1052】[HAOI2007]覆盖问题
    【BZOJ1051】[HAOI2006]受欢迎的牛
    【BZOJ1050】[HAOI2006]旅行
    laravel 操作多数据库总结
    微服务浅述---架构演进
    分布式锁
    laravel自动生成model
    springboot集成quartz实现任务调度
    laravel 队列服务使用总结
  • 原文地址:https://www.cnblogs.com/taotaoyangyan/p/5242627.html
Copyright © 2020-2023  润新知