Visual Studio 2010上的通用处理程序(.ashx)intellisense问题

时间:2012-01-03 11:43:25

标签: .net visual-studio-2010

我正在尝试在ashx文件上展开和折叠方法和其他东西,就像文件后面的任何其他代码一样。当我做tools > options > text editor and adding ashx as an extention of visual studio c#时,一切似乎都没问题。我可以展开和折叠方法,也可以看到文件顶部的属性和方法。但后来我失去了大部分智能感知。我无法达到我的用户定义的对象和方法。

我发现的类似问题并没有帮助我解决这个问题

Visual Studio ASP.Net expand and collapse issue in ashx generic handlers

i can't add #region to .ashx in visual studio 2010

3 个答案:

答案 0 :(得分:2)

有同样的问题 - this answer(你提到的第一个问题,但在你问过后发布)对我来说似乎是最好的选择。

总结一下:在(最好是专用的).cs文件中创建一个单独的类作为“代码隐藏”,在那里完成所有工作(包括实现IHttpHandler)并在其中使用实际的处理程序。 ashx只是在不做任何其他事情的情况下继承它:

        

public class MyHandler:MyIHttpHandlerCodeBehindClass {}

这为您的处理程序类提供完整的代码折叠和IntelliSense,而不会出现您提到的问题。唯一的缺点是一个额外的文件,但对我来说这是值得的。

答案 1 :(得分:1)

我将我的大部分ashx更改为aspx,只是因为它可以有CodeFile(单独的.cs文件)。

答案 2 :(得分:1)

陷入同样的​​烦恼。 要进一步采取@brichins解决方案/ reference, 而不是在你的ashx中使用继承只是直接引用AppCode文件夹中的类。

ashx文件仅 包含以下内容

<%@ WebHandler Language="C#" Class="MyHandler" %>

然后在AppCode文件夹中创建该类/ MyHandler.cs文件

using System;
using System.Web;

public class MyHandler : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/plain";
        context.Response.Write("Hello World");
    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}

如果需要,使用名称空间来避免类名冲突。