2012-11-06 100 views
17

我有一個偉大和重要的問題與Web.Config,我需要看到我的網頁的錯誤和解決它在asp.net web窗體和web配置,但是當錯誤發生時,我看到另一個錯誤,我看到這條消息:Web.config自定義錯誤模式衝突

的customErrors模式設置爲關或開或僅限遠程,

我設置該屬性關閉,但不顯示錯誤,並說請重新設置屬性在您的CustomError。

enter image description here

enter image description here

當我設置模式爲ON,說請重新設置的customErrors模式爲開。

enter image description here

enter image description here

+0

自定義錯誤就意味着你正在創建自己的頁面錯誤。像404找不到文件等等。當你將它設置爲關閉時顯示錯誤的每一個。而如果是遠程才從同一臺機器可以看到的唯一錯誤 –

+1

你扔你的錯誤。或者你已經在你的全局文件Application_Error方法中寫了一些東西? –

+0

感謝您的評論,我知道但我希望看到錯誤調試它,並且不顯示錯誤 –

回答

13

當您遇到配置問題時,請確保您的 設置未被覆蓋。

在這種情況下,您的服務器可能有一個配置<deployment retail="true" />重寫應用程序設置和禁用跟蹤輸出,自定義錯誤和調試功能。

值更改爲「假」

<deployment retail="false" /> 

MSDN Link

-1

將模式設置爲開,然後保存在web.config刷新或重新啓動IIS,並確保該模式仍設置爲在保存後。瀏覽一遍,它應該顯示的錯誤...

+0

不幸的是,它不能正常工作 –

+3

關於永遠不會顯示錯誤。只有'關' – Kenneth

3

確保您嵌套的customErrors標記的地方你<system.web>標籤內是這樣的:

<system.web> 
<customErrors mode="Off" /> 
</system.web> 

從你的描述它已經有可能被放在那裏你或自動生成另一種方式。另請嘗試設置爲「開」並重新啓動應用程序池。您只需修改web.config文件即可添加中斷返回,甚至只需按空格鍵即可完成此操作。現在重新上傳,確保這是您第二次將customErrors模式設置爲開啓。希望您現在可以查看您的自定義錯誤頁面。

如果您仍然遇到問題,並且可以從IIS管理器訪問您的網站,請嘗試編輯「功能」視圖中的.NET錯誤頁面。如果您的自定義錯誤頁面位於要訪問的web.config文件的正確目錄中,那麼也會執行相同的操作。

+0

不幸的是這不是工作 –

1

我只是想在這裏發表評論,但我沒有足夠的點評論,我們可以看到實際的,頁產生錯誤,並看到整個web.config?您可以模糊連接字符串等,以避免輸入任何密碼。

但隨着我所看到的,

我想從你說的話,你正在使用本地計算機上的IIS Express進行調試。 我會做IIS Express,或ctrl + F5頁面來查看該網站是否沒有被緩存。

將自定義錯誤設置爲Off將顯示調試消息 - 注意Off中的「O」必須以f的小寫字母大寫。看起來像你有這個,但值得一提

自定義錯誤關 - 指定自定義錯誤被禁用。這允許顯示詳細的錯誤。

1

我從來沒有見過它說設置爲。我已經看到它說設置customeErrors關閉,這會給你詳細的錯誤。將其設置爲關閉狀態,然後將看到的實際錯誤消息添加到此帖子中。你是否肯定你沒有得到像404錯誤那樣的不同信息?

3

要顯示調試錯誤和不顯示的自定義錯誤頁,你不需要defaultRedirect,只是有這應該然後輸出的調試/異常信息:

<system.web> 
    <customErrors mode="On" /> 
</system.web> 

注:確保On打頭大寫O。通過更改web.config,應該(默認情況下)回收您的應用程序池並立即獲取。

3

以下是您可以如何在自定義頁面上顯示例外的示例代碼。

首先創建的Default.aspx與按鈕:

的按鈕單擊事件
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Throw Error" /> 

添加以下代碼:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     throw new Exception("Sample Exception on my Page"); 
    } 

第二,標籤創建ErrorPage.aspx:

<asp:Label ID="Label1" runat="server" Text=""></asp:Label> 

而且錯誤代碼頁:

protected void Page_Load(object sender, EventArgs e) 
    { 
     Exception ex = Server.GetLastError(); 
     if (ex != null && ex.InnerException != null) 
     { 
      Label1.Text = string.Format("An error occured: {0}", ex.InnerException.Message); 
     } 
    } 

最後把下面的配置在web.config中:

<system.web> 
     <customErrors mode="On" defaultRedirect="~/ErrorPage.aspx" redirectMode="ResponseRewrite" /> 
    </system.web> 

編譯和Default.aspx的開始。點擊您的按鈕,錯誤將顯示在您的自定義頁面上。

快樂編碼!

1

從我所看到的,您沒有<customErrors mode="Off" />作爲<system.web>節點中的第一個節點。

如果我猜測,您在<compilation targetFramework="x.x">節點中有customErrors節點。

你可能有applicationpool設置爲編寫應用程序在.NET框架的另一個版本。確保<customErrors mode="Off" />節點是<system.web>節點中的第一個,那麼它很可能給你詳細的ErrorMessage。

1

刪除這一行對我的作品!

<customError /> 
+0

不幸的是,它不能正常工作 –

1

許多託管公司實際上都覆蓋了他們的web.config文件中的設置。您通常可以在網站的虛擬主機儀表板中設置這些具體屬性。

如果你告訴我們託管您使用的是具體的網絡,我們應該能夠與具體步驟,以幫助更好。

4

首先,你可以從「僅限遠程」設置的customErrors模式設置爲「關閉」 <customErrors mode="Off"></customErrors>

其次,您可以檢查您創建的Response.Redirect爲相同的defaultRedirect中customError的global.asax.maybe。你可以在這裏查看更多詳細信息ASP.NET customErrors with mode=remoteOnly and global.asax handling exceptions

和最後一個,也許你在你的webconfig中創建了兩個 system.web。你應該只在你的配置文件中有一個。請再次檢查你的webconfig。 不要忘記<compilation debug="true"/>