我确信这是一个简单的解决办法 - 但是经过几个小时的谷歌搜索,我找不到答案。
我要做的是设置一个自定义处理程序,它将处理{domain} / services / *路径的所有请求。
我有一个包含大量javascript和ajax调用的Web应用程序。我想实现一个处理程序,以促进其他服务的所有请求(谷歌地图,一些自定义服务等)。这将允许我在客户端上利用缓存和简单配置。
我的问题是处理程序的实现。我无法通过上面的路径信息捕获任何请求的IIS Express(或内置的VS 2010 Web服务器)。
我希望JavaScript客户端能够进行RESTful调用,让处理程序选择调用并相应地进行处理。
这是我到目前为止所做的:
我在这里感谢一些帮助。这让我疯了。
答案 0 :(得分:1)
在.Net中,Microsoft在WCF应用程序中提供了构建api的其余架构,该应用程序通过webHttpBinding协议管理请求和响应。
实现简单的自定义HttpHandler可能更有益/更有效,而不是调用与ASP.NET Web服务相关的所有管道和开销。使用自定义HttpHandler,您只需发送所需的参数,并准确返回您想要查看的结果,而无需在使用XML Web服务时创建任何支持的SOAP xml。
Bellow是自定义处理程序(我们也可以使用.ashx文件,但不支持自定义处理程序提供的虚拟路径或虚拟扩展)
<system.web>
<httpHandlers>
<add verb="*" path="Services.fck" type="restHandler"/>
</httpHandlers>
.....
if (Request.RequestType == "GET")
{
//RawUrl=http://localhost/Services.fck/?Vivek/Gupta
string RawUrl = Request.RawUrl;
string splitter = "/?";
string SubRawUrl = RawUrl.Substring(RawUrl.IndexOf(splitter) + splitter.Length);
string[] Parameters = SubRawUrl.Split('/');
if (Parameters.Length >= 2)
{
string name = Parameters[0];
string surname = Parameters[1];
string res = string.Format("Welcome {0} {1}", name, surname);
JavaScriptSerializer jc = new JavaScriptSerializer();
StringBuilder sb=new StringBuilder ();
jc.Serialize(res, sb);
Response.Write(sb.ToString());
Response.ContentType = "application/json";
}
}
如何使用http处理程序创建基于json,xml,纯文本(GET,Post)的休息服务以及如何从jquery,asp.net,javascript调用它们请参见下文:
答案 1 :(得分:-1)
您可能需要查看.Net Web API。