Я пытаюсь использовать внешний файл кода для включения некоторых вспомогательных классов для нескольких обработчиков .ashx. В примере один использует ListToJSON, который просто превращает вложенные списки (материал Theres вроде List<List<whatevers>>
, которые обрабатываются) в JSON (который будет передан в context.response)ASHX, включая класс кода -
Класс ListToJSON отлично работает, когда он находится в том же файле , Я пытаюсь помещать его в файл Helper.cs, который включен в тот же проект в VS2010, потому что эти классы используются в нескольких разных обработчиках.
У меня создалось впечатление, что «использование помощника»; было то, что мне нужно было сделать, но я до сих пор получаю сообщение об ошибке «Не удалось найти помощник по типу или пространству имен (вы не указали ссылку или ссылку на сборку?» (и intellisense тоже не видит)
I 've также попытался поместить оба файла кода в одно и то же пространство имен. Такая же ошибка.
Это не DLL-файл, это просто файл с кодом # # в том же проекте. Должен ли я скомпилировать его как 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
}
}
UPDATE: Итак, я поместил 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
Я не получает ошибок при выполнении этого через эмулятор IIS из Visual Studio. Когда я запускаю его через IIS (localhost), я получаю ошибку внутреннего сервера IIS. папку App_Code была сделана через VS, я сразу же нажал и выбрал Add ASP.NET Folder > App Code
\
Edit: Добавлен тег iis
Это довольно странно. Попробуйте поместить его в App_Code и посмотреть, исправляет ли он это. Вам не нужно устанавливать какие-либо ссылки, когда все в одном проекте. – Oliver
Я использовал быстрое исправление, поместив мой вспомогательный класс в папку App_Code. Однако мы надеемся увидеть реальный ответ. – BumbleB2na
Да, я думаю, что папка App_Code на самом деле является «правильной» способ сделать это (если вы не хотите делать предварительно скомпилированную dll) – sylverfyre