外部コードファイルを使用して、いくつかの.ashxハンドラーのヘルパークラスを含めようとしています。例の1つは、ListToJSONを使用しています。これは、ネストされたリスト(処理さList<List<whatevers>>
れているようなものがあります)をJSON(context.responseにスローされます)に変換するだけです。
ListToJSONクラスは、同じファイル内にある場合は正常に機能します。これらのクラスはいくつかの異なるハンドラーで使用されるため、VS2010の同じプロジェクトに含まれているHelper.csファイルに入れようとしています。
「ヘルパーを使っている」という印象を受けました。実行する必要がありましたが、「タイプまたは名前空間ヘルパーが見つかりませんでした(ディレクティブまたはアセンブリ参照がありませんか?」)というエラーが表示されます(インテリセンスでも表示されません)。
また、両方のコードファイルを同じ名前空間に配置してみました。同じエラー。
これは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は、IISで試した後、Helper.csで情報using Helper;
を取得していました。次のようなおなじみのエラーが発生しました。
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