如何解决.NET 中通用 Web 处理程序的奇怪问题
更新
我正在 ASP.NET Web 窗体项目中试验一些代码,但它没有按预期工作。
我在 ASP.NET 中有一个简单的 web 处理程序,它接受一个查询字符串,然后调用一个类上的公共方法来更新一个值。这是更新的代码:
<%@ WebHandler Language="C#" Class="Test" %>
using System;
using CareAboutAir;
using System.Web;
public class Test : IHttpHandler {
public void ProcessRequest ( HttpContext ctx ) {
try {
var data = (string)ctx.Request.QueryString["p_type"];
if ( data.ToLower ( ) == "fp" )
SiteTrafficDB.AddView ( DateTime.Today,out _,out _ );
ctx.Response.ContentType = "text/plain";
ctx.Response.Write ( "Hi!" );
}
catch {
ctx.Response.ContentType = "text/plain";
ctx.Response.Write ( "Hi!" );
}
}
public bool IsReusable {
get {
return false;
}
}
}
这段代码(如上所示)什么都不做。我没有语法高亮或智能感知,当我的网页调用它时它会被忽略。我在浏览器控制台中也没有收到任何错误。
我的目标是让 Web 处理程序可以放在自己的文件夹中,而不必驻留在根目录中。我有这个文件的另一个版本(没有顶部的声明)只要它在 web 应用程序的根文件夹中就可以很好地执行,但是如果我把它放在其他任何地方,它会被忽略并且不会执行(我不要认为它甚至在运行时被编译)。
有什么帮助吗?
解决方法
在 App_Code
文件夹和其他一些特殊文件夹中,asp.net 不允许运行页面和处理程序。
Shared Code Folders in ASP.NET Web Sites
在其他文件夹中,您必须能够运行它 - 如果不是,您必须在此处输入您得到的错误 - 或者只是自己检查 - 如果没有运行,您一定有错误。
还要检查页面顶部的声明是否正确且与其他类没有冲突。应该是……
<%@ WebHandler Language="C#" Class="Demo.Test" %>
我还注意到,当我从 Visual Studio 创建处理程序时,上面没有 namespace
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。