首頁 > 後端開發 > C#.Net教程 > 分享兩種ASP.NET網站發佈時的遇到的問題及解決方案

分享兩種ASP.NET網站發佈時的遇到的問題及解決方案

Y2J
發布: 2017-04-28 10:27:57
原創
2134 人瀏覽過

ASP.NET網站發佈時的那些坑,要小心了,為什麼網站發布後,每個頁面第一次打開都很卡? ASP.NET session 經常遺失如何解決?有一定的參考價值,有興趣的小夥伴可以參考一下

開發工具:VS2010,MVC4.0,SQLSERVER2008

伺服器:Windows server 2012,IIS8,SQLSERVER2012

##一、發布後,每個頁面第一次打開都很卡,50秒或更長,第二次打開就很快了

估計原因:編譯速度慢,但在有VS環境的機器上發布沒有這麼卡

解決方案:

使用高版本的VS,「在發布期間預編譯」;使用IIS8的Application Initialization功能1.使用VS2017「在發布期間預編譯」

#發佈時遇到一個報錯:

在應用程式層級之外使用註冊為allowDefinition='MachineToApplication' 的節是錯誤的。如果在 IIS 中沒有將虛擬目錄配置為應用程序,則可能導致此錯誤。

解決方法:發佈時註解web.config中的以下程式碼


##

<!--<authentication mode="Forms">
 <forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>-->
登入後複製

2. 使用IIS8的Application Initialization功能

ASP.NET網站第一次存取慢的解決方法

二、ASP.NET session 頻繁遺失問題

#問題現象:登入後30秒左右會話遺失,需要重新登入。

解決方法:ASP.NET有幾種會話狀態模式,預設為“InProc模式”,改為“StateServer模式”,問題解除。

1. off模式

即關閉Session。

全站關閉Session可在Web.Config檔案中的節中寫入:


要在某個頁面上關閉Session,可在頁面上新增:

<%@ Page EnableSessionState="false" %>


2. InProc模式(預設模式)

若未在Web.config檔中設定SessionState Mode,預設為InProc模式。

如果要自訂InProc模式的參數,則需要寫入Web.config文件,例如:


cookieless設定是否允許不使用Cookie,timeout設定逾時時間,單位為分鐘。

InProc模式依賴 ASP.NET進程, 當IIS進程崩潰或重新啟動時,儲存在進程中的會話狀態會遺失。

3. StateServer模式

StateServer模式是將會話資料儲存到單獨的記憶體緩衝區中,由一個Windows服務「ASP. NET State Service 」(需要在windows服務中開啟)來控制這個緩衝區,需要設定stateConnectionString:


使用StateServer模式時,所有需要儲存在Session中的類,都要加上可序列化的特性:

[Serializable]

public class SomeClass { }

StateServer模式的優點是獨立於IIS進程,IIS應用程式的重新啟動不影響會話資料。

4. SQLServer模式

使用SQL Server來保存Session,即使IIS重啟,Session仍然不會遺失。需要先建立ASPState資料庫。具體方法可上網查詢。

 以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

以上是分享兩種ASP.NET網站發佈時的遇到的問題及解決方案的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板