问题描述:配置Aiax方式如下:
1.在AppCode中加入文件夹Ajax,加入两个类文件:
Ajax.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Web.SessionState;
/// <summary>
///Ajax 的摘要说明
/// </summary>
public interface IAjax : IHttpHandler, System.Web.SessionState.IReadOnlySessionState
{
void ProcessAjax();
HttpRequest Request { get; }
HttpSessionState Session { get; }
HttpResponse Response { get; }
HttpServerUtility Server { get; }
}
public abstract class Ajax : IAjax
{
#region IAjax 成员
public abstract void ProcessAjax();
private HttpRequest request;
public HttpRequest Request
{
get { return this.request; }
}
private HttpResponse response;
public HttpResponse Response
{
get { return this.response; }
}
private HttpSessionState session;
public HttpSessionState Session
{
get { return this.session; }
}
private HttpServerUtility server;
public HttpServerUtility Server
{
get { return this.server; }
}
#endregion
#region IHttpHandler 成员
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "application/json; charset=utf-8";
context.Response.ContentEncoding = Encoding.UTF8;
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
this.request = context.Request;
this.response = context.Response;
this.server = context.Server;
this.session = context.Session;
ProcessAjax();
}
#endregion
}
AjaxText.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Web.SessionState;
/// <summary>
/// Summary description for AjaxText
/// </summary>
public abstract class AjaxText : IAjax
{
#region IAjax 成员
public abstract void ProcessAjax();
private HttpRequest request;
public HttpRequest Request
{
get { return this.request; }
}
private HttpResponse response;
public HttpResponse Response
{
get { return this.response; }
}
private HttpSessionState session;
public HttpSessionState Session
{
get { return this.session; }
}
private HttpServerUtility server;
public HttpServerUtility Server
{
get { return this.server; }
}
#endregion
#region IHttpHandler 成员
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain; charset=utf-8";
context.Response.ContentEncoding = Encoding.UTF8;
context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
this.request = context.Request;
this.response = context.Response;
this.server = context.Server;
this.session = context.Session;
ProcessAjax();
}
#endregion
}
加入Web.HttpHandlers.config:
<?xml version="1.0" encoding="utf-8"?>
<httpHandlers>
<add verb="GET,POST" path="ajaxSupplier.v" type="AjaxSupplier"/> //type必须和调用的Ajax方法类一样
</httpHandlers>
ajax调用方式:
在IIS6.0的配置,只需要在中加入应用程序扩展即可,但是在IIS7.0以上的版本后,这样的解决方案一直都是提示找不到.v文件
解决该问题的方案:
1.可删除掉Web.HttpHandlers.config文件,在Web.config文件中加入节点:system.webServer(两种配置方式),具体内容如下:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<defaultDocument>
<files>
<remove value="iisstart.htm" />
<remove value="index.html" />
<remove value="index.htm" />
<remove value="Default.asp" />
<remove value="Default.htm" />
</files>
</defaultDocument>
<security>
<requestFiltering>
<fileExtensions>
<add fileExtension=".v" allowed="true" />
</fileExtensions>
</requestFiltering>
</security>
<handlers>
<add name="AjaxTest" path="ajaxtest.v" verb="GET,POST" type="AjaxTest"/>
</handlers>
</system.webServer>
或者这样:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<add name="AjaxTest" path="ajaxtest.v" verb="GET,POST" type="AjaxTest"/>
</handlers>
</system.webServer>