使用VS2017開發ASP.NET MVC釋出到虛擬主機中無法訪問的問題記錄
1. 虛擬主機最高支援到.Net FrameWork 4.7,使用VS2017新建一個ASP.NET FrameWork 4.7應用釋出到FTP之後發現報錯。
查了發現問題在於VS2017編譯器預設為Roslyn,虛擬主機中不支援用Roslyn編譯進行動態編譯。
解決方案:
不使用Roslyn,在Nugut中將Microsoft.CodeDom.Providers.DotNetCompilerPlatform包解除安裝。手動刪除Roslyn目錄。
2. 虛擬主機最高支援MVC 4,但是上傳之後發現路由無法對映,報404。
整理一下:
MVC4:
根目錄下的Web.Config:
<?xml version="1.0"?> <!-- For more information on how to configure your ASP.NET application, please visit https://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <!-- For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367. The following attributes can be set on the <httpRuntime> tag. <system.Web> <httpRuntime targetFramework="4.5" /> </system.Web> --> <system.web> <compilation debug="true" targetFramework="4.5"/> <httpRuntime/> <customErrors mode="Off"/> <pages controlRenderingCompatibilityVersion="4.0"/> </system.web> <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> <bindingRedirect oldVersion="4.0.0.0-4.0.0.1" newVersion="4.0.0.1"/> </dependentAssembly> </assemblyBinding> </runtime> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <modules runAllManagedModulesForAllRequests="true" /> <handlers> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" /> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" /> <remove name="ExtensionlessUrlHandler-Integrated-4.0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> </handlers> </system.webServer> </configuration>
Views目錄下的Web.Config:
<?xml version="1.0"?> <configuration> <configSections> <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> </sectionGroup> </configSections> <system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <pages pageBaseType="System.Web.Mvc.WebViewPage"> <namespaces> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> </namespaces> </pages> </system.web.webPages.razor> <appSettings> <!--<add key="webpages:Enabled" value="false" />--> <add key="webpages:Version" value="2.0.0.0" /> </appSettings> <system.web> <httpHandlers> <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> </httpHandlers> <!-- Enabling request validation in view pages would cause validation to occur after the input has already been processed by the controller. By default MVC performs request validation before a controller processes the input. To change this behavior apply the ValidateInputAttribute to a controller or action. --> <pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <controls> <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> </controls> </pages> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <handlers> <remove name="BlockViewHandler"/> <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> </handlers> </system.webServer> </configuration>
因為虛擬主機支援.Net 4.7,因此我就試了一下MVC 5,果然是可以的。附上Web.Config。
MVC 5:
根目錄下的Web.Config:
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
https://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.7.2"/>
<httpRuntime targetFramework="4.7.2"/>
</system.web>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-5.2.6.0" newVersion="5.2.6.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>
<handlers>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit"/>
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"/>
<remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0"/>
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0"/>
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
</handlers>
</system.webServer>
</configuration>
Views目錄下的Web.Config:
<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
<appSettings>
<!--<add key="webpages:Enabled" value="false" />-->
<add key="webpages:Version" value="2.0.0.0" />
</appSettings>
<system.web>
<httpHandlers>
<add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
</httpHandlers>
<!--
Enabling request validation in view pages would cause validation to occur
after the input has already been processed by the controller. By default
MVC performs request validation before a controller processes the input.
To change this behavior apply the ValidateInputAttribute to a
controller or action.
-->
<pages
validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=5.2.4.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<remove name="BlockViewHandler"/>
<add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />
</handlers>
</system.webServer>
</configuration>
相關推薦
使用VS2017開發ASP.NET MVC釋出到虛擬主機中無法訪問的問題記錄
1. 虛擬主機最高支援到.Net FrameWork 4.7,使用VS2017新建一個ASP.NET FrameWork 4.7應用釋出到FTP之後發現報錯。 查了發現問題在於VS2017編譯器預設為Roslyn,虛擬主機中不支援用Roslyn編譯進行動態編譯。 解決
不使用Visual Studio開發ASP.NET MVC應用(下篇)
構建 onf log rdquo 你們 err ica ide lan 書接上回! 前文“純手工”、徹底拋棄Visual Studio,制作了一個ASP.NET MVC應用,運行起來還不錯,項目目錄、源代碼、web.config等所有東西都已經做到
UI控制元件Telerik UI for ASP.NET MVC釋出R3 2018 SP1|附下載
UI for ASP.NET MVC擁有使用JavaScript和HTML5構建網站和移動應用所需的70+UI部件,來滿足開發者的各種需求,提供無語倫比的開發效能和使用者體驗。它主要是針對專業級的 ASP.NET開發,通過該產品的強大功能,開發者可以開發出功能豐富、適應標準廣泛的響應式應用程式。
使用Visual Studio 2015 開發ASP.NET MVC 5 專案部署到Mono/Jexus
最新的Mono 4.4已經支援執行asp.net mvc5專案,有的同學聽了這句話就興高采烈的拿起Visual Studio 2015建立了一個mvc 5的專案,然後部署到Mono上,瀏覽下發現一堆錯誤出現,心中一萬隻草泥馬奔騰而來,這也叫支援嗎,這個問題是Visual Studio造成的,不相信的話可以使用
Asp.net mvc 釋出winserver 2012
首先在開啟伺服器管理,點新增角色和功能 這個名字自己設定不打緊 勾選web伺服器,之後點下一步 在功能選擇中勾選下面部分 之後點選工具選擇服務,確保web服務正在執行 此時服務端告一段落,返回主機開啟vs清理和重新生成解決方案,然後在web專案右鍵點擊發布。名
ASP.NET MVC釋出部署過程
IIS 7.0 直接建立WebSite就可以了 可能出現500.19錯誤,原因是先安裝了vs,後安裝iis 解決方案: cmd導航到C:\Windows\System32\inetsrv 執行appcmd unlock config -section:system.w
[ASP.NET 2.0]虛擬主機上部署AJAX控制元件
在未安裝微軟AJAX元件的虛擬主機上部署包含ajax控制元件的WEB程式的方法: 在本機找到 C:/Program Files/Microsoft ASP.NET/ASP.NET 2.0 AJAX Extensions/v1.0.61025 將目錄下的System.Web.E
Essential Studio for ASP.NET MVC釋出2017 v2,增加日期範圍選擇器功能
Essential Studio for ASP.NET MVC是一個幫您輕鬆建立高效能Web應用程式的ASP.NET MVC介面開發包,它包含了幾乎所有企業級Web應用程式開發所需要的控制元件,如Grids, Charts, Gauges, Menus, Calend
ASP.NET MVC如何在Action中返回腳本並執行
發現 刷新 asc 特殊 spa 如果 resp 添加 div 我們都知道在aspx頁面的cs文件中只要用Respos.Write("<script></scritp>")就可以在前臺執行腳本 但是在MVC中就不一樣了,返回腳本要給定腳本類型返回。如
asp.net core 釋出到iis session無法傳遞的問題
網站是用asp.net core 的Razor Pages開發的,其中使用者登入用到了session,除錯執行沒有問題,但是釋出到iis之後出現session無法記錄的問題。 我用log記錄查看了一下,發現同一頁面記錄session再取是可以的,但是跳轉到另一個頁面就無法獲取session資訊了。 解決方
在ASP.NET MVC的資料模型中設定的DataAnnotation MaxLength的驗證無效的解決方式
本文例項講述ASP.NET在MVC中設定的DataAnnotation MaxLength特性設定無效的解決方法。分享給大家供大家參考。具體分析如下:我們經常會在ASP.NET MVC專案中,給某個Model的欄位設定MaxLength特性如下:public class E
asp.net mvc razor佈局頁中a標籤的href的跳轉問題
筆者做了一個檔案上傳系統,檔案上傳後,儲存在wwwroot目錄的file資料夾中,並把該檔案的路徑儲存到資料庫中, 如這樣的一個路徑儲存在資料庫: file/b775f487-0127-41e0-9df8-2a5f1624cd87.jpg上傳成功後,當在home控制器的in
Asp.Net MVC 4 Web API 中的安全認證---使用OAuth
//文章轉載自 // Oauth授權處理 http://www.cnblogs.com/n-pei/archive/2012/05/29/2524673.html#undefined 相關: http://www.cnblogs.com/n-pei/archive
ASP.Net MVC從客戶端中檢測到有潛在危險的 Request.Form 值
ASP.NET MVC4(Razor)從客戶端中檢測到有潛在危險的 Request.Form 值 “/”應用程式中的伺服器錯誤。 從客戶端(Content=" sdfdddd ...")中檢測到有潛在危險的 Request.Form 值。 說明: ASP.NET 在請求中
asp.net mvc 設置一個action的訪問人數,達到上線排隊
scom completed sta listt 完成 異步 lis string let /// <summary> /// 1,對訪問此action的用戶進行異步處理,然後將此異步加入到全局的list當中, /// 再
WebMatrix開發的Razor網站釋出到IIS後無法訪問的解決方法
其實在vwd下面除錯是正常滴;IIS環境在網址後新增.cshtml字尾,也是可以成功訪問滴~!不過,估計大家都不願這麼弄,還好Google了一下,找到了一片英文的解決方案:http://learn.iis.net/page.aspx/872/webmatrix-beta-r
在ASP.NET Core Web API 專案裡無法訪問(wwwroot)下的檔案
解決辦法:在“ Startup.cs ” 檔案裡的 Configur方法裡新增一句程式碼“ app.UseStaticFiles() ”,這樣就可以訪問wwwroot下的檔案了。 - 方法程式碼是
《ASP.NET MVC企業實戰》(一) MVC開發前奏
htm 右鍵 () ctrl+ 其中 bsp net 代碼 int 一、工具和方法 學到了一些沒用過的工具和方法: a)刪除多余的using指令並排序:一個類頭部的using一般會有很多用不到的,在完成類的編寫後,可以右鍵選擇”組織using”來刪除沒用的using並排序
Asp.Net MVC 插件化開發簡化方案
asp.net 插件化 Web 管理系統可以龐大到不可想像的地方,如果想就在一個 Asp.Net MVC 項目中完成開發,這個工程將會變得非常龐大,協作起來也會比較困難。為了解決這個問題,Asp.Net MVC 引入了 Areas 的概念,將模塊劃分到 Area 中去——然而 Area 仍然是主項目的
asp.net mvc+jquery easyui開發實戰教程之網站後臺管理系統開發2-Model層建立
ack 前端 strong syn eee 名稱 lar led tegra 上篇(asp.net mvc+jquery easyui開發實戰教程之網站後臺管理系統開發1-準備工作)文章講解了開發過程中的準備工作,主要創建了項目數據庫及項目,本文主要講解項目M層的實現,M層