2012-06-12 75 views
0

我試圖使用外部代碼文件來爲幾個.ashx處理程序包含一些輔助類。例子之一是使用ListToJSON,它只是將嵌套列表(Theres像List<List<whatevers>>這些正在處理的東西)轉換爲JSON(它將被扔進context.response)包括代碼隱藏類的ASHX -

ListToJSON類在同一個文件中工作正常。我試圖把它放到一個Helper.cs文件中,該文件包含在VS2010中的同一個項目中,因爲這些類在幾個不同的處理程序中使用。

我的印象是「使用助手」是我需要做的,但我仍然得到錯誤「類型或名稱空間幫助器無法找到(您是否缺少指令或程序集引用?」 (並且intellisense也沒有看到它)

I我也試過把這兩個代碼文件放到同一個命名空間中,同樣的錯誤

它不是一個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/文件夾中,它看起來很好玩。智能感知是撿東西在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 

我通過Visual Studio的IIS模擬器中運行這個時候沒有錯誤。當我通過IIS(localhost)運行它時,出現描述的IIS內部服務器錯誤。 App_Code文件夾通過VS做,我點擊右鍵並選擇Add ASP.NET Folder > App Code \

編輯:添加標籤iis

+0

這很奇怪。嘗試把它放在App_Code中,看看是否修復它。當一切都在同一個項目中時,您不必設置任何參考。 – Oliver

+0

我已經通過將我的幫助器類放入App_Code文件夾中進行了快速修復。雖然期待看到真實的答案。 – BumbleB2na

+0

是的,我認爲App_Code文件夾實際上是「正確」的方式來做到這一點(假設你不想做一個預編譯的DLL) – sylverfyre

回答

2

我假設你正在使用WebSite而不是WebApplication

雖然在Website中添加新的Class文件,但應該在App_Code文件夾中以避免Accessibility問題。

編輯 - 1 =>請參閱下面的發佈詳情。

enter image description here

編輯= 2 =>嘗試在bin文件夾添加個別Assembly如下所述。這將確認App_Code文件夾Dll已合併。

enter image description here

+0

是的。直到我專門開始使用App_Code進行搜索時,我發現了一個合適的解決方案。 解釋文件夾結構的MSDN鏈接:http://msdn.microsoft.com/en-us/library/t990ks23.aspx – sylverfyre

+0

好的。它通過VS工作,但不是當我嘗試在IIS中使用它。這是怎麼回事? – sylverfyre

+0

重建完整的解決方案。在發佈之前,選擇「發佈之前刪除所有文件」選項並再次檢查。 – Pankaj

0

對於IIS正確從App_Code文件夾讀類,App_Code文件夾(或bin文件夾,用於編譯的程序)需要在IIS根目錄,以便類內被檢測到。

在我的情況下,我發佈到IIS根目錄的子文件夾,所以IIS無法看到它的類。

+0

因此,您將文件夾保存爲現有文件夾的子文件夾? – Pankaj

+0

非常。該網站在[iis root]/app/app_name /中,因此Visual Studio將App_Code文件夾放在/ app/app_name/App_Code中 - 這導致App_Code在Visual Studio的iis模擬器中正常工作(因爲它將站點根放到項目中根),但當我告訴它導出到IIS它不會工作,因爲App_Code是在錯誤的地方。 它與App_Code文件夾手動移動到IIS根文件夾正常工作。 Bin文件夾具有相同的警告 -/bin /務必位於IIS根目錄中才能運行。 – sylverfyre