【问题标题】:Curious problem with generic web handler in .NET.NET 中通用 Web 处理程序的奇怪问题
【发布时间】:2021-03-28 20:23:04
【问题描述】:

更新

我正在一个 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;
        }
    }
}

这段代码(如上所示)什么都不做。我没有语法高亮或 Intellisense,当我的网页调用它时它会被忽略。我在浏览器控制台中也没有收到任何错误。

我的目标是让 web 处理程序可以放在自己的文件夹中,而不必放在根目录中。我有这个文件的另一个版本(顶部没有声明),只要它位于 Web 应用程序的根文件夹中,它就可以正常执行,但是如果我把它放在其他任何地方,它就会被忽略并且不会执行(我不要认为它甚至在运行时编译)。

有什么帮助吗?

【问题讨论】:

  • 你有这个处理程序附带的 .ashx 文件吗?还是在web.config中注册的?
  • 这是来自 .ashx 文件的代码隐藏代码。仅包含类声明。

标签: c# asp.net webforms


【解决方案1】:

App_Code 文件夹和其他一些特殊文件夹中,asp.net 不允许运行页面和处理程序。

Shared Code Folders in ASP.NET Web Sites

在其他文件夹中,您必须能够运行它 - 如果没有,您必须在此处输入您收到的错误 - 或自行检查 - 如果无法运行,您一定有错误。

还要检查页面顶部的声明是否正确且与其他类不冲突。一定是……

<%@ WebHandler Language="C#" Class="Demo.Test" %>

我还注意到,当我从 Visual Studio 创建处理程序时,我没有 namespace

【讨论】:

  • 我更新了代码和我对问题的描述。你能再看看吗?谢谢!
  • @SRiverNet 我做了一些额外的测试-如果您使用其他目录,我看不到任何错误-当它不运行时,我实际上收到一条错误消息-我建议您尝试删除catch { 查看可能的错误 - 还可以查看 EventViewer 运行它时遇到的错误。如果它没有运行 - 你必须在事件查看器上有一个错误
  • 我在“try”上放了一个断点,只要我把webhandler留在根目录下,断点就会被命中。当我将文件放在不同的文件夹中时,它没有。就好像编译器在执行时重建应用程序时从未看到它一样。
  • @SRiverNet 暂时忘掉调试器——如果你只是运行它会得到什么?
  • @SRiverNet 将此行放在System.Diagnostics.Debugger.Launch(); 中,看看它是否在您运行时启动调试器 - 调用它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-27
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 2012-07-23
  • 1970-01-01
相关资源
最近更新 更多