0

我正在尝试使用外部代码文件来包含几个 .ashx 处理程序的一些帮助程序类。示例之一是使用 ListToJSON,它只是将嵌套列表(正在使用类似的东西List<List<whatevers>>)转换为 JSON(将被扔进 context.response)

ListToJSON 类在同一个文件中时可以正常工作。我试图将它放入一个 Helper.cs 文件中,该文件包含在 VS2010 的同一个项目中,因为这些类在几个不同的处理程序中使用。

我的印象是“使用Helper;” 是我需要做的,但我仍然收到错误“找不到类型或命名空间帮助程序(您是否缺少指令或程序集引用?”(并且智能感知也没有看到它)

我也尝试将两个代码文件放入同一个命名空间。同样的错误。

它不是DLL文件,它只是同一个项目中的ac#代码文件。我真的应该将它编译为 DLL 来执行此操作吗?如果是这样,我该怎么做?(一旦我这样做,我可以右键单击->添加参考,对吗?)

我想我应该使用 App_Code 文件夹,但我不确定如何在 VS 中设置它以便正确引用它。

我的处理程序文件(骨架)

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

using System;
using System.Web;
using System.Configuration;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Diagnostics;
using Helper;
public class generateReport : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
        ListToJSON Converter = new ListToJSON();
        //context.Response stuff goes here.
    }
}

我的帮助文件 Helper.cs - 它位于同一个项目目录中,并且包含在项目中:

using <stuff>;
namespace Helper
{
    public class ListToJSON
    {
        //class definition here
    }
}

更新:所以,我将 Helper.cs 放入/App_Code/文件夹中,它似乎玩得很好。Intellisense 在我做之后在 Helper.cs 中拾取东西using Helper; 当我在 IIS 上尝试它时,我得到了以下熟悉的错误:

Compiler Error Message: CS0246: The type or namespace name 'Helper' could not be found (are you missing a using directive or an assembly reference?)
Line 19: using Helper;
Source File: <path>\info.ashx    Line: 19

通过 Visual Studio 的 IIS 模拟器运行此程序时,我没有收到任何错误。当我通过 IIS (localhost) 运行它时,我得到描述的 IIS 内部服务器错误。App_Code文件夹是通过VS制作的,我右键选择Add ASP.NET Folder > App Code\

编辑:添加标签iis

4

2 回答 2

2

我假设您正在使用WebSite而不是WebApplication.

在中添加新Class文件时Website,它应该在App_Code文件夹中以避免出现Accessibility问题。

编辑 - 1 => 请参阅下面的发布详细信息。

在此处输入图像描述

编辑 = 2 => 尝试Assembly在 bin 文件夹中添加个人,如下所述。这将确认该App_Code文件夹Dll已合并。

在此处输入图像描述

于 2012-06-12T16:40:56.440 回答
0

为了让 IIS 从 App_Code 文件夹中正确读取类,App_Code 文件夹(或 bin 文件夹,用于编译的程序集)需要位于 IIS 根目录中才能检测到其中的类。

就我而言,我发布到 IIS 根目录的子文件夹,因此 IIS 看不到其中的类。

于 2012-06-18T15:00:15.300 回答