使用C#将数据发送到接受JSON数据的通用处理程序
本文关键字:数据 JSON 处理 程序 使用 | 更新日期: 2023-09-27 17:58:52
我遇到了访问ASP的情况。NET通用处理程序使用JQuery加载数据。但由于从JavaScript加载的数据对搜索引擎爬网程序不可见,我决定从C#加载数据,然后将其缓存到JQuery。我的处理程序包含了很多逻辑,我不想在代码隐藏中再次应用这些逻辑。这是我的处理程序代码:
public void ProcessRequest(HttpContext context)
{
JavaScriptSerializer jsonSerializer = new JavaScriptSerializer();
string jsonString = string.Empty;
context.Request.InputStream.Position = 0;
using (var inputStream = new System.IO.StreamReader(context.Request.InputStream))
{
jsonString = inputStream.ReadToEnd();
}
ContentType contentType = jsonSerializer.Deserialize<ContentType>(jsonString);
context.Response.ContentType = "text/plain";
switch (contentType.typeOfContent)
{
case 1: context.Response.Write(getUserControlMarkup("SideContent", context, contentType.UCArgs));
break;
}
}
我可以从C#调用函数getUserControlMarkup()
,但在调用它时必须应用一些基于URL的条件。contentType.typeOfContent
实际上是基于URL参数的。
如果可以将JSON数据发送到这个处理程序,请告诉我如何做到这一点。我正试图访问这样的处理程序:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Common.host + "Handlers/SideContentLoader.ashx?typeOfContent=1&UCArgs=cdata");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
但它在第行的Handler代码中给出了NullReferenceException
:ContentType contentType = jsonSerializer.Deserialize<ContentType>(jsonString);
一个很好的方法是使用路由。在Global.asax 中
protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
private void RegisterRoutes(RouteCollection routes)
{
routes.MapHttpHandlerRoute("MyRouteName", "Something/GetData/{par1}/{par2}/data.json", "~/MyHandler.ashx");
}
这告诉ASP。Net调用/Something/GetData/XXX/YYY/data.json
上的处理程序。
您可以访问处理程序中的路由参数:context.Request.RequestContext.RouteData.Values["par1"]
。
只要URL在某个地方被引用(即robots文件或链接),爬网程序就会解析它们。
不确定为什么要这样做,但要向HTTP请求添加内容,请使用:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Common.host + "Handlers/SideContentLoader.ashx?typeOfContent=1&UCArgs=cdata");
var requestStream = request.GetRequestStream();
using (var sw = new StreamWriter(requestStream))
{
sw.Write(json);
}
您的问题是
- 在ASP中使用Javascript将内容加载到Div中。NET使用C#
- 搜索引擎可见
我的意见
- 当您想要更新部分页面时,有一些处理程序或服务可以在服务器和客户端之间进行通信。您可以使用Ajax请求服务器
如果你使用jquery,你可以尝试这个函数jQuery.ajax();
例如:
$.ajax({
url:"/webserver.aspx",
data:{id:1},
type:'POST',
success: function(data) {
//do it success function
}
}) ;
下一步是在ASP后面的代码中生成Web服务。NET,应该是JSON或XML格式的结果,无论你使用什么,都要确保你可以在jQuery.ajax();
的成功函数中轻松解析
本文对在ASP。净
生成JSON Web服务ASP。净
在代码背后解析Json在背后解析Json代码
生成JSON RESULT并使用客户端Javascript Web Services ASP。NET Json
2.搜索引擎实际上是可见
我认为如果你允许搜索引擎为你的页面建立索引,这是没有问题的,即使你有一些Ajax代码,搜索引擎也会为你的网页建立索引。