2010-03-16 211 views
2

我在asp.net web應用程序中有幾個xml文件,我不想讓任何人訪問除我的服務器端代碼以外的其他文件。這就是我想..http處理程序不在web服務器上工作,但在localhost上工作

<add verb="*" path="*.xml" type="System.Web.HttpForbiddenHandler" /> 

我寫這個的< HttpHandlers的內部>

它運作良好,在本地主機,但不能在服務器......沒有任何猶豫的服務器顯示XML文件...我不知道如何着手?

在此先感謝.. :)

更新:服務器有II S6,windows server 2003

回答

2

您應該檢查什麼其他的處理程序是服務器上的活動,並影響.xml文件,包括一般的像<add verb="*" path="*" ...

此外,檢查服務器配置爲指向:httpHandlers Element (ASP.NET Settings Schema)

Microsoft Internet信息服務(IIS)具有自己的模型,用於將擴展映射到ISAPI。對於給定應用程序擴展和其處理程序之間的映射生效,擴展必須在IIS中映射到ASP.NET ISAPI。對於非標準擴展,例如自定義擴展,您必須相應地配置IIS。

UPDATE:Protecting Files with ASP.NET

+0

我檢查得很好,沒有什麼與我的特定處理程序相沖突 – ZX12R 2010-03-16 06:47:00

+1

@ ZX12R:你真的檢查過xml文件是否映射到服務器上的ASP.NET ISAPI擴展? – alexandrul 2010-03-16 07:48:04

+0

可以請你告訴我如何做一個徹底的映射檢查。 – ZX12R 2010-03-16 08:30:18

2

你可以把它們放在特殊的App_Data目錄中。此文件夾內的文件不被提供。

+0

我不認爲這是完美的解決方案。它會工作,但只是一個解決方法。 – ZX12R 2010-03-16 06:53:08

+0

對此答案+1;這不是一個解決方法,它是完美的用法App_Data – bgs264 2010-03-16 12:06:53

0

有關使用<location>標籤是什麼?

<configuration> 
    <location path="something.xml"> 
     <system.web> 
     <authorization> 
      <deny users="*"/> 
     </authorization> 
     </system.web> 
    </location> 
</configuration> 
+0

我不認爲我完全理解,應該將標記放置在配置根目錄下。?我認爲每個配置文件只允許有一個元素。我和解釋.. – ZX12R 2010-03-16 06:45:03

+0

是的,實際上,我建議使用web.config中提到的位置標記,並指出XML的路徑。然後在您的auth標籤中,指定拒絕用戶= *。我沒有檢查它,但我希望它能工作 – 2010-03-16 06:53:38

+0

它在localhost中工作,但在服務器失敗.. !! – ZX12R 2010-03-16 07:08:18

1

IIS 6 & Visual Studio的內置Web服務器寄存器事情有點不同於IIS 7,如果你的主機運行IIS 7,您可能需要您註冊加入到<system.WebServer>節點在你的web.config文件。

<system.webServer> 
    <handlers> 
    <add ... /> 
    </handlers> 
</system.webServer> 
+0

已更新我的問題...服務器使用IIS6 .. – ZX12R 2010-03-16 07:09:12

+0

如果是這樣的話,@ alexandrul的答案可能是正確的。 IIS直接處理所有文檔請求,除非映射到其他處理程序。許多託管提供商都提供控制面板,您可以在其中將文件擴展名映射到特定處理程序 – 2010-03-16 07:58:40

0

我也遇到了類似的問題。在我的本地主機,crud操作工作正常,並在網格上顯示數據,但同樣不適用於虛擬機中託管的url,表現怪異, 原因: 我一直接着調用處理程序,再次調用一個更多的處理程序在這兩個調用中顯示網格中的數據保存正常發生,但顯示處理程序不是隻在提琴手中打。 Sol: 所以我試圖以保存顯示的回調序列化格式發送數據,這解決了我的問題,它只是一個快速修復,不知道爲什麼它不工作。

理想情況下,處理程序的多個調用應該可以工作,但是如果您調用多個處理程序後可能會發生另一個問題,而不是嘗試僅在一次調用中獲取數據,它可能會幫助您解決問題。

相關問題