2012-10-10 71 views
7

我使用N2Cms,並正在尋找我有它的一些問題。它在左側有一個導航面板,當您展開樹時通過ajax加載。500內部服務器錯誤IIS7編碼的網址

獲取節點childeren的代碼調用帶有一些參數的ashx文件。一個參數是一個路徑,並在其中包含斜槓。出於這個原因,它已被編碼。

.../cms/Content/Navigation/LoadTree.ashx?target=preview&selected=%252fhome%252fhelp-and-advice%252f 

我有我的開發服務器上與此沒有任何問題(運行IIS 7.5),但在部署到我們的測試服務器(IIS7)導航無法工作。

調查顯示上面的url給出了500錯誤。

如果我的網址進行解碼,以

.../cms/Content/Navigation/LoadTree.ashx?target=preview&selected=/home/help-and-advice/ 

它的工作原理,沒有任何問題。

不幸的是,我不能改變生成這個作爲其n2cms源代碼的一部分的代碼,我假設它已被編碼的一個很好的理由。

有誰知道我可以在我的web.config中做任何事情來允許編碼參數或我可以在iis服務器上更改的東西?

編輯: 所以這個鏈接似乎表明,它的目的是作爲一個安全mesures。 http://msdn.microsoft.com/en-us/library/ee656542.aspx

建議的解決方案是升級到.NET 4.0,並添加以下到Web.config

<configuration> 
<uri> 
    <schemeSettings> 
    <add name="http" genericUriParserOptions="DontUnescapePathDotsAndSlashes"/> 
    </schemeSettings> 
</uri> 
</configuration> 

不幸的是,這似乎沒有任何效果。

任何想法,爲什麼這不工作?

回答

1

這可能是URLScan實用程序。 URL掃描根據其配置文件中的規則阻止URL。它也有它自己的日誌文件,所以你可以通過查看URLScan日誌來確認。

做一個谷歌搜索URLSCan的默認位置。

+0

URLScan似乎是一個iis插件。我不認爲我們已經安裝了它。我不能在添加刪除程序或窗口功能罰款。 – sianabanana

+0

在這裏檢查C:\ Windows \ System32 \ inetsrv \ urlscan或在這裏C:\ Windows \ SysWOW64 \ inetsrv \ urlscan。位置取決於您是否正在運行64位。如果urlscan存在於其中一個位置並且存在「logs」子目錄,那麼您正在運行它。 –

+0

正如我所說,它沒有安裝。這些文件夾不存在,也不在機器上的任何文件或文件夾中對urlscan進行任何引用。 – sianabanana

1

看來你的網址經歷了2個html編碼。 有沒有一些URL重寫模塊在IIS7服務器上處於活動狀態?

+0

不是我所知道的。這是一個標準的Windows Web服務器2008安裝(使用iis7)。我認爲這是iis7的一個「功能」,因爲在iis7.5上使用相同的代碼進行類似的標準安裝並沒有這個「功能」。 – sianabanana

0

好吧,即時通訊與此相處。

當試圖找到IIS日誌中的錯誤並失敗時,然後查看關於失敗的跟蹤請求的許多帖子,並且仍然沒有在iis中發現任何錯誤,我認爲請求只是沒有進入IIS。

回頭看服務器錯誤,也有線索。
500內部服務器錯誤。該請求被HTTP篩選器拒絕。

這是防火牆! 我們已禁用HTTP篩選器,現在它的工作原理:)

我現在需要調查這個HTTP過濾器應該保護我們,並且我們現在安全了,現在我們已經關閉它。