0

外部コードファイルを使用して、いくつかの.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

4

2 に答える 2

2

私はあなたが使用していると仮定し、ではWebSiteありませんWebApplication

Classに新しいファイルを追加している間、問題を回避するためにフォルダWebsite内にある必要があります。App_CodeAccessibility

編集-1 =>以下の公開の詳細を参照してください。

ここに画像の説明を入力してください

Edit = 2Assembly =>以下に説明するように、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 に答える