1. 程式人生 > >IIS7.0(虛擬機器)釋出MVC5程式出現Http403錯誤的解決方法.

IIS7.0(虛擬機器)釋出MVC5程式出現Http403錯誤的解決方法.

  近來,用MVC5開發自己的一個小網站.網上租用了一個小空間(虛擬主機),可選.net版本為2.0 3.0 3.5 4.0 ,上傳網站 後發現是403錯誤.不能訪問.




經與技術人員聯絡,把虛擬機器更換到高版本.net4.5.1上面,還是不行.在本地IIS環境下可以訪問.遠端伺服器下不能訪問.


多方查資料未能解決.伺服器提供方也無能為力了.只能自己再想辦法解決.原來在剛剛購買空間時上傳了一個.net2.0的程式,能正常執行.而且伺服器上以經安裝了相應.net框架,理論上是應該能使用的.本著解決問題不怕麻煩的精神,用VS2013建立了多個版本的網站基本程式,(如: .net4.0 MVC4, .net4.5 MVC4, .net4.5 Mvc5,.net4.5.1 MVC5)發現在.net4.0 MVC4,能夠訪問,其它的三個都不能訪問.遂對比Web.config檔案.

<?xml version="1.0" encoding="utf-8"?>
<!--
  有關如何配置 ASP.NET 應用程式的詳細資訊,請訪問
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="
PreserveLoginUrl" value="true" /> <add key="ClientValidationEnabled" value="true" /> <add key="UnobtrusiveJavaScriptEnabled" value="true" /> </appSettings> <system.web> <compilation targetFramework="4.0" /> <pages> <namespaces> <add namespace
="System.Web.Helpers" /> <add namespace="System.Web.Mvc" /> <add namespace="System.Web.Mvc.Ajax" /> <add namespace="System.Web.Mvc.Html" /> <add namespace="System.Web.Routing" /> <add namespace="System.Web.WebPages" /> </namespaces> </pages> </system.web> <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>
這是.net4.0 MVC4 的Web.config程式碼
<?xml version="1.0" encoding="utf-8"?>
<!--
  有關如何配置 ASP.NET 應用程式的詳細資訊,請訪問
  http://go.microsoft.com/fwlink/?LinkId=301880
  -->
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    
    <section name="UploadConfig" type="DataModel.Config.UploadConfig,DataModel"/>
  
    <section name="WebSiteInfo" type="DataModel.Config.WebSiteInfo,DataModel"/>
    
    <section name="UserConfig" type="DataModel.Config.UserConfig,DataModel"/>
  
  </configSections>
  <connectionStrings>
    <!--<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-WEB-20140601091318.mdf;Initial Catalog=aspnet-WEB-20140601091318;Integrated Security=True" providerName="System.Data.SqlClient" />-->
    <add name="LonggerDataEntities" connectionString="metadata=res://*/LonggerDataModel.csdl|res://*/LonggerDataModel.ssdl|res://*/LonggerDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=***;persist security info=True;user id=***;password=***;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <authentication mode="None" />
    <compilation debug="true" targetFramework="4.5.1" />
    <httpRuntime targetFramework="4.5.1" />
  </system.web>
  <system.webServer>
    <modules>
      <remove name="FormsAuthenticationModule" />
    </modules>
  </system.webServer>
  <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.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.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="WebGrease" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v12.0" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>

  <UploadConfig configSource="Config\Upload.config" />
  
    
  
  <WebSiteInfo configSource="Config\WebSiteInfo.config" />
  
  <UserConfig configSource="Config\UserConfig.config" />
  
</configuration>
這是.net4.5.1 MVC5 的Web.config程式碼

仔細觀察發現,在
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
       <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>

中間少一條 <add key="PreserveLoginUrl" value="true" /> 這個應該是登入引導用的.應該用處不大.

最主要的是在  <system.webServer>   </system.webServer>  看了網上好多方法,都是在這裡面加上<modules runAllManagedModulesForAllRequests="true" />   ,這個我試了,不管用,反而會引發500錯誤.經過對比,發現需要加入以下程式碼

  <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>
用這段程式碼替換你的Config檔案相應的配置節

當然了,你的配置節裡有其它配置,就要自己有選擇的添加了.

經測試,成功!!!!現記錄下來,一來備忘,二來可以幫助有需要的人.

相關推薦

IIS7.0(虛擬機器)釋出MVC5程式出現Http403錯誤解決方法.

  近來,用MVC5開發自己的一個小網站.網上租用了一個小空間(虛擬主機),可選.net版本為2.0 3.0 3.5 4.0 ,上傳網站 後發現是403錯誤.不能訪問. 經與技術人員聯絡,把虛擬機器更換到高版本.net4.5.1上面,還是不行.在本地IIS環境下可以訪問.遠端伺服器下不能訪問.多方查資料未能

Esxi 6.0虛擬機器遷移Linux遇到網路配置錯誤

在使用vmware遷移linux系統過程中(遷移方式是匯出OVF模板和部署OVF模板),發現部署後的linux系統無法啟動網絡卡 報錯為 Bringing up interface eth0: Device eth0 does not seem to be present,d

本地電腦訪問本機電腦虛擬機器上的redis遇到的問題解決方法

public static void main(String[] args) { JedisShardInfo jedisShardInfo=new JedisShardInfo("192.168.98.129",6379); Jedis jedis=new Jedis(

VMware複製ubuntu16虛擬機器時提示控制代碼無效解決方法

第一步: 找到如下圖所示檔案:(Ubuntu16-32為虛擬機器名稱,每個人設定的不一樣,注意) 第二步: 以記事本開啟第一步找到的檔案 第三步: 修改下面圖示的一行程式碼,將"TRUE"改為"

Android Studio 3.0整合ButterKnife8.8.1版本出現問題以及解決方法

      新安裝了Android Studio 3.0 ,做專案的時候需要整合ButterKnife,去githd上一看ButterKnife升級到了8.8.1,按著用法整合到了專案中,but 出現了下面的錯誤:Error:(2, 0) Android Gradle plu

虛擬機器非正常關機,啟動不了解決方法

虛擬機器centos7沒正常關機,物理機突然斷電了,開啟VMware卻開不了centos了 該虛擬機器似乎正在使用中。如果該虛擬機器未在使用,請按“獲取所有權(T)”按鈕獲取它的所有權。否則,請按“取消(C)”按鈕以防損壞。配置檔案xxxxx 解決辦法: 到你的安裝

通過Pyinstaller打包Pygame庫寫的小遊戲程式出現的問題解決方法

# - 基於Python的Pygame庫的GUI遊戲 遊戲內容是通過飛船發射子彈來射擊外星人 空格鍵為開火,左右方向鍵移動,並設立了 不同關卡。 使用說明: 開發環境,遊戲直接執行alien_invasion.exe即可,也可在具有Python3環境下執行alien_in

外部訪問虛擬機器的tomcat遇到的問題和解決方法

部署好tomcat,想在自己電腦上的瀏覽器訪問,但是發現訪問不了 訪問方式是瀏覽器位址列輸入ip加埠,我的是192.138.211.121:8080,顯示結果是無連線 在電腦上ping一下主機發現是可以ping通的,在虛擬機器使用curl 192.138.211.121:8

應用程式中嵌入的網頁執行時出現“指令碼錯誤解決方法

 CComPtr<IWebBrowser2> pWB2;  HRESULT hr;  hr = m_wndIE.QueryControl(&pWB2);  if (pWB2)  {   CComVariant v;   CComBSTR url(

android 6.0 textview 跑馬燈失效和出現抖動的解決方法

最近搞個專案,要在地圖上顯示天氣資訊,我使用了個textview加跑馬燈效果進行滾動顯示,一切都很正常。 前幾天測試在6.0系統的機子上進行了測試,發現跑馬燈失效了,一直在抖動。感覺像是6.0相容性上

虛擬機器VirtualBox中Ubuntu無法全屏解決方法

1、在VirtualBox選單欄中選擇【裝置】->【安裝增強功能】 2、在ubuntu系統中選擇【位置】->【VBOXADDITIONS_#】 3、點選【開啟自動執行提示】,自動安裝完成後,會有英文提示“按下回車關閉視窗”,按回車就好了。 4、cd /m

Win7系統下Vmware虛擬機器無法使用USB裝置問題的解決方法

Windows7釋出後,Vmware也推出了新版的Vmware Workstation 7和Player 3,從功能上為Win7進行了優化。近日QQ上有一MM提到她的Vmware中安裝的XP虛擬機器只能檢測到連上的USB裝置(比如U盤,加密狗、手機之類),而無法載入到虛擬機器中使用,虛擬機器中沒有USB裝置的

virtualbox 虛擬機器 win7和linux ping不通的解決方法

解決辦法:啟動虛擬機器雙網絡卡支援: 網絡卡1:Host-Only網路, 需要在關閉虛擬機器的時候進行設定 網絡卡2:NAT網路 設定好以後,可以在Linux主機中ifconfig檢視本地Host-Only的網路地址,與電腦中的地址應該是同一網段。

虛擬機器VirtualBox中Ubuntu12無法全屏解決方法

虛擬機器VirtualBox中Ubuntu無法全屏解決方法 1、在VirtualBox選單欄中選擇【裝置】->【安裝增強功能】 2、在ubuntu系統中選擇【位置】->【VBOXADDITIONS_#】 3、點選【開啟自動執行提示】,自動安裝完成後,會有英文提示

windows 10 服務組件安裝出現0x80070422錯誤解決方法

自動更新 功能 無法 class 禁用 面板 code date 提示 問題描述: windows 10通過控制面板->程序->啟用或關閉Windows 功能安裝Windows服務或組件時,出現0x80070422錯誤,提示服務禁止或未啟用 問題產生原因:

mysql8 出現1521錯誤解決方法

pri pass exp tex 方法 ims mic any ping ALTER USER ‘root‘@‘localhost‘ IDENTIFIED BY ‘password‘ PASSWORD EXPIRE NEVER; #修改加密規則 ALTER USER ‘ro

mysql初次安裝出現1067錯誤解決方法

 我的mysql版本是5.6.12,解壓後,按網上說的建立my.ini檔案,如同你那樣。也遇到你所遇到的問題,找不到答案,快瘋了。 後來想想,為什麼不要自帶的my-default.ini呢。於是去掉my-default.ini 中#註釋的配置。 cmd下執行: mysqld.

win7 x64下安裝 KB958559 出現 0x80240037 錯誤解決方法(win7 x64 安裝VB6、Media Studio 8)

想在win7 X64下執行以前的一些32位程式,比如 VB6 、Media Studio Pro 8 等好用的軟體,之前在win7 x86下還勉強能安裝執行,但是 win7 x64 下是直接連安裝都安裝不了了,以前也用虛擬機器,但是暫時沒這想法,於是查了一下,發現MS已經推出了一個用於win7的

關於navicat連線mysq出現如下錯誤解決方法

Navicat Premium 12系列 連線MySQL資料庫時會出現Authentication plugin ‘caching_sha2_password’ cannot be loaded的錯誤: 解決方法: 首先通過命令列進入mysql,依次輸入以下命令: ALTER US

win8 上安裝SVN時出現2503錯誤解決方法

在win8上安裝SVN客戶端時會出現2503的錯誤,其實是許可權不夠 解決辦法: 1、點選視窗鍵 2、鍵盤輸入“cmd” 3、在查詢出來的應用中,選擇命令列提示,點選選擇以管理員身份執行 4、在命令列視窗輸入命令: msiexec /package “svn安裝