【发布时间】:2012-06-12 16:24:04
【问题描述】:
我正在尝试使用外部代码文件为多个 .ashx 处理程序包含一些帮助程序类。示例之一是使用 ListToJSON,它只是将嵌套列表(正在使用的诸如 List<List<whatevers>> 之类的东西)转换为 JSON(将被扔进 context.response)
ListToJSON 类在同一个文件中时可以正常工作。我正在尝试将它放入一个 Helper.cs 文件中,该文件包含在 VS2010 的同一个项目中,因为这些类在几个不同的处理程序中使用。
我的印象是“使用 Helper;”是我需要做的,但我仍然收到错误“找不到类型或命名空间帮助程序(您是否缺少指令或程序集引用?” (而智能感知也看不到它)
我也尝试将两个代码文件放入同一个命名空间。同样的错误。
它不是一个DLL文件,它只是同一个项目中的一个c#代码文件。我真的应该将它编译为 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/ 文件夹中,它看起来运行良好。在我完成 using Helper; 之后,Intellisense 正在 Helper.cs 中收集东西
当我在 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
【问题讨论】:
-
这很奇怪。尝试将其放入 App_Code 中,看看是否可以修复它。当所有内容都在同一个项目中时,您不必设置任何引用。
-
我使用了一个快速修复方法,将我的助手类放在 App_Code 文件夹中。不过,期待看到一个真正的答案。
-
是的,我认为 App_Code 文件夹实际上是执行此操作的“正确”方式(假设您不想制作预编译的 dll)
标签: c# asp.net iis code-behind ashx