我正在尝试使用外部代码文件为几个.ashx处理程序包含一些帮助程序类。示例一是使用ListToJSON,它只是将嵌套的Lists(正在使用的像List<List<whatevers>>
这样的东西)转换为JSON(它将被抛入context.response)
当ListToJSON类在同一个文件中时,它可以正常工作。我试图把它放到一个Helper.cs文件中,该文件包含在VS2010的同一个项目中,因为这些类在几个不同的处理程序中使用。
我的印象是“使用助手;”是我需要做的,但我仍然得到错误“无法找到类型或命名空间帮助器(你错过了指令或程序集引用吗?” (并且intellisense也没有看到它)
我也尝试将两个代码文件放在同一个命名空间中。同样的错误。
它不是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
答案 0 :(得分:2)
我假设您使用的是WebSite
而不是WebApplication
。
在Class
中添加新的Website
文件时,应该在App_Code
文件夹中以避免Accessibility
问题。
编辑 - 1 =&gt;请参阅下面的发布详细信息。
编辑= 2 =&gt;尝试在bin文件夹中添加单个Assembly
,如下所述。这将确认App_Code
文件夹Dll
已合并。
答案 1 :(得分:0)
要使IIS从App_Code文件夹中正确读取类,App_Code文件夹(或bin文件夹,对于已编译的程序集)需要位于IIS根目录中,以便检测其中的类。
在我的情况下,我发布到IIS根目录的子文件夹,因此IIS无法看到其中的类。