標籤:iis管理器 網站發布 vs2010 asp.net web
今天研究了一下如何發布web網站,之前總是沒耐心,遇到點問題就沒心情搞了,今天總算有點耐心搞明白了。其實遇到的問題還是挺多的,網上也沒有太全的解釋,所以結合自己還有別人的方法進行一下總結。
環境:Win7系統,Visual Studio 2010,IIS6.1
關於發布部分,大家可以查看此連結http://wanghaitaoboke.blog.163.com/blog/static/1708725122012527716235/,步驟寫的很詳細。補充一下:在其第二步【發布Web】部分,【目標檔案】處要選擇一個非項目工程所在檔案夾。
如果大家各方面設定的都比較好,看完上面的文章你的網站就已經發布了,在區域網路內已經可以瀏覽了。不過,通常如果你是首次發布,應該不會那麼順利。重點在下面:
當在地址欄中輸入設定的IP地址+連接埠號碼後可能出現以下幾種情況。
問題一,檢測到在整合的託管管道模式下不適用的ASP.NET設定。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/40/09/wKioL1POFKTgahLxAAeP-N2p45M282.jpg" title="QQ20140722132825.jpg" alt="wKioL1POFKTgahLxAAeP-N2p45M282.jpg" />
解決辦法:開啟IIS,選擇應用程式集區,會看到右側的操作欄中有一項為【設定應用程式集區預設設定】,點擊進入,把【啟用32位應用程式】置為true,把【託管管道模式】置為Classic。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/40/09/wKioL1POFL7iEPsNAAJZdLWZ2p0111.jpg" title="QQ20140722141349.jpg" alt="wKioL1POFL7iEPsNAAJZdLWZ2p0111.jpg" />
問題二,由於Web伺服器的“ISAPI 和 CGI 限制”列表設定,無法提供您請求的頁面。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/40/09/wKiom1POE9Oh4aDqAAjgluflWzE001.jpg" title="QQ20140722133016.jpg" alt="wKiom1POE9Oh4aDqAAjgluflWzE001.jpg" />
解決辦法:開啟IIS,選擇根目錄,雙擊【ISAPI和CGI限制】這項,然後將【ASP.NET v4.0.30319】這兩項均設定成允許。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/40/09/wKioL1POFQXTVRklAAMMOPZtvoo976.jpg" title="QQ20140722141722.jpg" alt="wKioL1POFQXTVRklAAMMOPZtvoo976.jpg" />
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/40/09/wKiom1POE_zzzQm6AAHXQ6mhlfM949.jpg" title="QQ20140722141949.jpg" alt="wKiom1POE_zzzQm6AAHXQ6mhlfM949.jpg" />
問題三,沒有可訪問的表。請確保在Global.asax中註冊了至少一個資料模型並啟用了基架,或者實現自訂頁面。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/40/09/wKiom1POFCHBOZUAAAgX0pU9_J8622.jpg" title="QQ20140722133404.jpg" alt="wKiom1POFCHBOZUAAAgX0pU9_J8622.jpg" />
解決辦法:開啟工程,開啟Global.asax檔案,在RegisterRoutes 方法下我們可以看到下面內容
// 重要: 資料模型註冊 // 取消對此行的注釋,為 ASP.NET Dynamic Data 註冊 LINQ to SQL 模型。 // 若要設定 ScaffoldAllTables = true,需符合以下條件, // 即確定希望資料模型中的所有表都支援基架(即模板)。若要控制各個表的 // 基架,請為表建立部分類別並將 // [ScaffoldTable(true)] 特性應用於部分類別。 // 注意: 請確保將“YourDataContextType”更改為應用程式的資料內容類的 // 名稱。 // model.RegisterContext(typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = false });
把程式碼片段解注後,用自己建立的上下文替換YourDataContextType,把ScaffoldAllTables 置為true,我用的是Linq to Sql 寫的資料部分。修改後是這個樣子
DefaultModel.RegisterContext(typeof(BmsContextDataContext), new ContextConfiguration() { ScaffoldAllTables = true });
修改之後,不要忘記重新再發布一次。
問題四,不能開啟資料庫,登入失敗
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/40/09/wKiom1POFFvS3BfVABFLAhUKktA768.jpg" title="QQ20140722133934.jpg" alt="wKiom1POFFvS3BfVABFLAhUKktA768.jpg" />
解決辦法:這個問題剛出來的時候有點懵,以為是IIS設定的問題,後來仔細一瞅,隱隱覺得似曾相識,通過查看資料庫連接,發現果然是串連資料庫上出現了問題,跟IIS設定無關。而這個問題的解決方案在以前的一篇文章中詳細寫過,遇到這個問題的時候,都是這麼解決的,大家可以看以下連結:http://zhouhongyu1989.blog.51cto.com/2931598/1390501
解決了以上幾個問題之後,再次登入發布後的網站,就能正常訪問了,然後又在同區域網路的其他機器上驗證了一下,也沒什麼問題。
本文出自 “給我一根兒煙” 部落格,請務必保留此出處http://zhouhongyu1989.blog.51cto.com/2931598/1441389
ASP.NET Visual Studio2010 發布Web網站問題詳解