2011-01-21 24 views
4

我正在與託管管道模式=「集成」自定義404頁與<httpErrors>元件似乎沒有在IIS 7

我的網站的目標移動設備,並利用井形成的URL傳遞參數測試的IIS 7.5網站起作用最少打字。例如'mysite.com/bob1234'在這種情況下'bob1234'實際上是參數。

在Application.BeginRequest,我處理使用正則表達式來確定如果所述URL以及所形成的Request.Url.AbsolutePath。

我想添加自定義404錯誤頁面,如果用戶輸入錯誤的網址即mysite.com/boob1234。

<system.web> 
    <customErrors mode="RemoteOnly" defaultRedirect="~/MobileError.aspx"> 
     <error statusCode="404" redirect="404.htm"/> 
    </customErrors> 
</system.web> 

雖然當擴展名是「的.aspx」這個捕捉錯誤,它不會趕上404(一個或多個)時,沒有處理被映射,例如‘/mysite.com/boob1234’。

我按照說明操作,還增加了一個元素,我system.webserver

<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true" />   
    <httpErrors defaultResponseMode="Redirect" errorMode="DetailedLocalOnly"> 
     <remove statusCode="404" subStatusCode="-1"/> 
     <error statusCode="404" prefixLanguageFilePath="" 
       path="/mobile/MobileError.aspx" responseMode="ExecuteURL"/> 
    </httpErrors>   
</system.webServer> 

但沒有這方面的迭代似乎工作。當我取消註釋塊時,出現500錯誤。不,我的代碼似乎沒有任何問題。即使只是轉發到純HTML頁面,我也會遇到500錯誤。

我並實施失敗請求跟蹤,看看有什麼我能看到。

我得到預期:404由IIS Web核心拋出。

然後幾步後,CustomerErrorModule啓動,但它無法用一個500錯誤。詳細信息是

ConfigExceptionInfo: \ \ C:..... \ MyApp的\ web.config中(89) :這部分配置不能 在此路徑中使用。當 的部分是在一個父 級鎖會出現這種情況。鎖定默認爲 (overrideModeDefault =「Deny」),或者通過位置標記 overrideMode =「Deny」或傳統 allowOverride =「false」明確設置 。

我試着走了「的.config」疊加,並沒有發現overrideMode =任何引用‘拒絕’

任何幫助將是真棒。完全卡住了。

感謝: 迪倫

+0

嗨迪倫,你能解決這個問題嗎?請讓我知道我有一個非常相似的。謝謝。 – GibboK 2011-10-11 17:31:40

回答

1

在黑暗中只是一個嘗試,嘗試添加該屬性的httpErrors元素:

existingResponse="PassThrough" 

例如:

<httpErrors existingResponse="PassThrough" 
     defaultResponseMode="Redirect" 
     errorMode="DetailedLocalOnly"> 
2

這與IIS內的請求的生命週期做。在沒有處理程序映射的情況下,404甚至可以在ASP dll被調用之前識別。對於在IIS中未明確標識爲需要Asp.Net的項目,IIS 404錯誤將觸發並忽略Asp.Net中的任何指令。即使通配符應用於所有擴展名,只有在IIS未首先檢測到404時纔會調用此通配符。這包括目錄和所有未由.Net明確處理的文件擴展名。因此,如果您嘗試去http://mydomain.com/images/someimage.gif並且該文件不存在,您將不會收到.Net 404錯誤處理程序。如果您將.gif更改爲.aspx,處理程序將隨後啓動。我見過的唯一方法就是對IIS進行更改,以便將IIS中的所有404處理程序更改爲重定向到本地站點上的URL文件。它會通過一個aspxerror查詢字符串,但是如果你在你的url聲明中加入一個?error =,你將能夠添加特定的信息。

我試過的另一件事,雖然我不知道我是否正確地嘗試過,但正在重新分配IIS中文件的映射。我們定義Asp.Net應該處理所有的.gif請求。我遇到的問題是圖像沒有出來,Base64編碼(我認爲?)文本出來了。由於最簡單的解決方案是使用IIS自定義錯誤映射,因此在最後期限之後我沒有采取這種做法。

相關問題