<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      IIS部署 vue3+.net7+SignalR

      目標服務器為window2016,IIS10.0

      一.IIS使用安裝。

      第一步,打開“控制面板”,進入啟動或關閉Windows功能頁面,系統會打開“服務器管理器”。

       

       

       

      一直點下一步,進入到下述界面,其中常見HTTP功能中的WebDAV發布按需求選擇,這個功能會過濾掉一些請求謂詞,比如使用put、delete方式,導致無法正常請求,報Error 405 - Method Not Allowed,下面會有解決該問題的說明。

       

       

       

       

       

       

       

       一直點下一步,等待安裝完成即可。

      二.部署準備工作

      光是下好IIS并不行,我們要部署前端還需要IIS中有“Web 平臺安裝程序”(點擊跳轉安裝),下載完成后如下。

       

       

       

       目前Web平臺安裝程序已經停止維護,官方下載鏈接失效,可以直接通過網址下載 URLRewrite 跟 Application Request Routing.進行安裝。

       

      接著,我們需要在“Web 平臺安裝程序”中下載兩個模塊,分別 URLRewrite(點擊跳轉安裝) 和 Application Request Routing(點擊跳轉安裝),安裝過程及完成后如圖所示。

       

       

       

       

       然后,雙擊“Application Request Routing”,在右側操作中點擊“Proxy”中的“Server Proxy Settings...”,然后將“Enable proxy”打上勾即可

       

       

       上面這一步必須配置了,后面發布的Vue項目URL重寫才能成功。

       

       

      三.部署前端(以vue為主)

      第一步,右擊“網站”后,點擊“添加網站”

       

       

       第二步,如圖所示。

       

       

      第三步,雙擊你創建部署的網站,在右側操作中,點擊“瀏覽網站”,即可訪問成功,如下圖。

       

       到這一步部署只是部署了,能訪問,但是還有很多問題跟報錯,接下來解決錯誤。

      四.問題與報錯

      1.HTTP 錯誤 404.0 - Not Found(需重寫路由入口)

      經過上面的部署后,我們會發現,如果刷新頁面或者跳轉路由,會報錯 ??

      HTTP 錯誤 404.0 - Not Found

      您要找的資源已被刪除、已更名或暫時不可用。

      最可能的原因:

      指定的目錄或文件在 Web 服務器上不存在。
      URL 拼寫錯誤。
      某個自定義篩選器或模塊(如 URLScan)限制了對該文件的訪問。
      可嘗試的操作:

      在 Web 服務器上創建內容。
      檢查瀏覽器 URL。
      創建跟蹤規則以跟蹤此 HTTP 狀態代碼的失敗請求,并查看是哪個模塊在調用 SetStatus。
      詳細錯誤信息:

      模塊 IIS Web Core
      通知 MapRequestHandler
      處理程序 StaticFile
      錯誤代碼 0x80070002
      請求的 URL http://xxx.xxx.x.xxx/login
      物理路徑 C:\Users\Admin\Desktop\aa\dist\login
      登錄方法 匿名
      登錄用戶 匿名
      詳細信息:

      此錯誤表明文件或目錄在服務器上不存在。請創建文件或目錄并重新嘗試請求。

      這個錯誤是由路由入口錯誤造成的,主要是因為沒有確定路由的入口,這個時候就需要我們去使用 URLRewrite 去重寫路由入口,保證每次路由請求都能從index.html主入口進入,保證路由的準確性,我這里簡單配置后,就可以刷新和路由跳轉了,具體如下。

      (1).點擊“URL重寫”,然后點擊操作中的“添加規則”

       

       

      (2).編輯規則,完成后在部署的網站中重啟,在點擊瀏覽網站,成功解決報錯。

       

       注意:
      名稱:名稱按功能命名即可
      匹配URL:選擇使用正則表達式,然后模式根據請求的api來填寫,比如我請求的api地址全都是為'/api/---',那我這里填寫 ^((?!(api)).)*$ 即可,會將URL中所有不含api文字的鏈接重寫為首頁。

       

       

       

      2.請求調用不了(需要重寫請求地址)

      這里重寫是根據我的devServer.proxy中的重寫來的,正則表達式只需將api替換為你定義的重寫名

       

       

      3.地址顯示undefined

      如果出現以下這種問題,先確定請求重寫規則是否設置并啟用了,若啟用了,則可能是因為部署地址的端口被占用。

       

       修改操作如下,這樣之后就可以正常調用請求了。

       

       

      4.前端Vue項目如需解決跨域問題可以通過下述方式解決(一般不需要)

      方法一:手動設置

      選中當前站點》右側找到HTTP響應頭》右側“增加”

       

       

       

       

      Access-Control-Allow-Headers:AuthToken, Authorization, Origin, Content-Type, Accept, X-Requested-With

      Access-Control-Allow-Methods:GET, POST, PUT, DELETE, OPTIONS

      Access-Control-Allow-Origin:*
      ————————————————

      方法二:站點根目錄的配置文件設置

      1.新建一個txt

      2.把下面代碼寫入到文件里

      3.文件和后綴名改成 web.config

      <?xml version="1.0" encoding="UTF-8"?>
      <configuration>
          <system.webServer>
              <httpProtocol>
                  <customHeaders>
                      <add name="Access-Control-Allow-Origin" value="*" />
                      <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
                      <add name="Access-Control-Allow-Headers" value="AuthToken, Content-Type, Accept, X-Requested-With" />
                  </customHeaders>
              </httpProtocol>
          </system.webServer>
      </configuration>

       

      5.如果Vue前端中有  POST請求,會出現 405 - 不允許用于訪問此頁的 HTTP 謂詞

      1、為什么會出現這個錯誤?

      我們可以理解為在當前IIS服務器上,html頁面只支持get請求,不支持post請求。

      2、處理辦法

      登陸遠程服務器,打開IIS管理工具,選擇出現此問題的站點,點擊進入“處理程序映射”–>”添加模塊映射”,在請求路徑錄入“*.html”,模塊選擇“ServerSideIncludeModule”,可執行文件不用選,名稱可以隨便填一個(例如:SSI-html),然后點擊“確認”即可。

      如果在服務器上面找不到“ServerSideIncludeModule”模塊,提示“ServerSideIncludeModule不是可識別的本機模塊”,不著急,處理方案在這里

      post提交訪問html頁面,需要ServerSideIncludeModule的支持,那服務器上面找不到這個模塊該怎么辦呢?不要著急,請接著往下面看

      出現找不到的情況,是因為我們在安裝IIS服務的時候,少裝了一個叫“客戶端包含”的功能,按下面的步驟安裝好后,就能找到ServerSideIncludeModule了

      win10安裝該功能的步驟
      打開“windows功能”,打開“Internet Information Services”–>“萬維網服務”–>“應用程序開發功能”,選中“服務器端包含”,安裝即可。

       

      6. .net core API 的項目,部分請求地址使用了put、delete方式,導致無法正常請求,報Error 405 - Method Not Allowed。

      可能一:由于配置IIS時把“WebDAV 發布”給勾選了,所以會導致攔截。

      解決方案

      方案一:服務器上刪除“WebDAV 發布”(需在所有項目未用到該功能的前提下)

      1、打開“控制面板”=》“程序和功能”

      2、點擊“啟用或關閉windows 功能” 

      3、在服務器管理器中,找到“管理”=》“刪除角色和功能”

      4、在“刪除角色和功能向導”=》一步步往下走,找到“服務器角色”=》“web服務器(IIS)”=》“Web服務器”=》“常見HTTP功能”=》“WebDAV發布”,勾選去掉,然后繼續點擊下去。

      5、最后重啟服務器即可。

       

       

       方案二,修改.net core api 發布文件中的web.config文件,在 modules 和 handlers 移除掉WebDav模塊

       <system.webServer> 
         <modules runAllManagedModulesForAllRequests="true"> 
           <remove name="WebDAVModule" /> 
         </modules> 
         <handlers>
            <remove name="WebDAV" />
         </handlers>
       </system.webServer> 

      可能二:AspNetCoreModule模塊對請求謂詞進行了攔截,通過下述圖片說明進行修改。

       

       

       

       

       

       

       

       

       

       

       

       

       五、以開源前后端分離項目成功掛載到IIS的經歷作為總結。

      文件鏈接 https://gitee.com/izory/ZrAdminNetCore https://gitee.com/izory/ZRAdmin-vue 我的部署方式為部署成兩個站點,同一ip,端口不一樣。

       vue 項目的開發環境設置 .env.development 文件 5030是后端接口

      # 開發環境配置
      ENV = 'development'
      
      VITE_APP_API_HOST = 'http://localhost:5030'
      
      # 開發環境
      VITE_APP_BASE_API = '/dev-api'
      
      # 路由前綴
      VITE_APP_ROUTER_PREFIX = '/'
      
      # 默認上傳地址
      VITE_APP_UPLOAD_URL = '/Common/UploadFile'
      
      #socket API
      VITE_APP_SOCKET_API = '/msghub'

      vite.config.js 中的 部分代碼  5020是前端vue項目運行端口

       server: {
            port: 5020,
            host: true,
            open: true,
            proxy: {
              // https://cn.vitejs.dev/config/#server-proxy
              '/dev-api': {
                target: env.VITE_APP_API_HOST,
                changeOrigin: true, //是否允許跨越
                rewrite: (path) => path.replace(/^\/dev-api/, '')
              },
              '/msghub': {
                target: env.VITE_APP_API_HOST,
                ws: true,
                rewrite: (path) => path.replace(/^\/msgHub/, '')
              }
            }
          }

      .env.production  發布文件 我使用的是ip發布,填寫的是ip地址

      # 生產環境配置
      ENV = 'production'
      
      VITE_APP_API_HOST='http://xxx.xx.xx.xx:5030'
      # 生產環境
      VITE_APP_BASE_API = '/prod-api'
      
      # 路由前綴
      VITE_APP_ROUTER_PREFIX = '/'
      
      # 默認上傳地址
      VITE_APP_UPLOAD_URL = '/Common/UploadFile'
      
      #socket API
      VITE_APP_SOCKET_API = '/msghub'

       

      IIS上新建個Vue站點,設置如下:

       

       

       

       

       

       

       

       

       

      使用 yarn build:prod  命令將Vue 項目打包,拷貝dist目錄下的文件到IIS站點的發布目錄下,即上圖中高級設置中的物理路徑下

       

      在該目錄下新建個web.config文件,填寫為下述文件,保存重啟網站即可(注意在iis管理控制臺對該網站的任何操作修改,都會更新到web.config)。

      <?xml version="1.0" encoding="UTF-8"?>
      <configuration>
        <system.webServer>
          <rewrite>
            <rules>
                      <clear />
                      <rule name="prod-api" stopProcessing="true">
                          <match url="^(.*?)prod-api/(.*)$" />
                          <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                          <action type="Rewrite" url="http://localhost:5030/{R:2}" />
                      </rule>
                      <rule name="msghub" enabled="true" stopProcessing="true">
                          <match url="^(.*?)msghub(.*)$" />
                          <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
                          <action type="Rewrite" url="http://localhost:5030/msghub{R:2}" />
                      </rule>
                      <rule name="Handle History Mode and custom 404/500" enabled="true" stopProcessing="true">
                          <match url="^((?!(api|msghub)).)*$" />
                          <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                              <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                              <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                          </conditions>
                          <action type="Rewrite" url="/" />
                      </rule>
            </rules>
          </rewrite>
              <modules runAllManagedModulesForAllRequests="true">
                  <remove name="WebDAVModule" />
              </modules>
              <handlers>
                  <remove name="WebDAV" />
              </handlers>
              <security>
                  <requestFiltering>
                      <verbs>
                          <add verb="POST" allowed="true" />
                      </verbs>
                  </requestFiltering>
              </security>
        </system.webServer>
      </configuration>

      rules 我添加了三個URL重寫:

       

       

      1.由于前端的請求地址都帶有 prod-api  前綴,將帶有 prod-api 的請求URL全部重寫到后臺端口..

      2.SignalR通信,將帶有 msghub的請求重寫,只需要改端口將前臺接口5020重寫到后臺接口5030上。

      3.將所有不帶 api 、msghub 字樣的URL 重寫為/

      我將網站的WebDAV發布進行了移除。由于SignalR通信 http://xxx.xxx.x.xxx:5020/msghub/negotiate?negotiateVersion=1 使用Post請求,在請求篩選的HTTP謂詞中加了POST

       

       

       

       .net 7 API發布的話 由于Program.cs文件中處理了Cors,跨域不需要做其他工作

      var corsUrls = builder.Configuration["corsUrls"]?.Split(',', StringSplitOptions.RemoveEmptyEntries);
      
      //配置跨域
      builder.Services.AddCors(c =>
      {
          c.AddPolicy("Policy", policy =>
          {
              policy.WithOrigins(corsUrls == null ? Array.Empty<string>() : corsUrls)
              .AllowAnyHeader()//允許任意頭
              .AllowAnyMethod()//允許任意方法
              .AllowCredentials();//允許cookie SignalR要求必須開啟 AllowCredentials,而AllowCredentials需要和WithOrigins配對出現。
          });
      });

      另外如果安裝IIS的時候勾選了安裝WebDAV模塊的話,也需要在發布后的Web.config中對該模塊進行移除.

        IIS 如果報錯 500.19 位置在 <modules runAllManagedModulesForAllRequests="true"> 這一句的話

       

      解決辦法: 
       
      出現這個錯誤是因為 IIS 7 采用了更安全的 web.config 管理機制,默認情況下會鎖住配置項不允許更改。要取消鎖定可以以管理員身份運行命令行 %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers 。其中的 handlers 是錯誤信息中紅字顯示的節點名稱。
       
      如果modules也被鎖定,可以打開命令提示符(管理員)運行 %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

      %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

      注意:要以管理員身份運行才可以,默認不是管理員身份,方法,在開始菜單中的搜索程序與文件輸入CMD,就會在上方出現一個CMD.EXE,在這個CMD.EXE文件上點擊鍵,選擇“以管理員身份運行”,打開命令行窗口,輸入以上命令即可。
       另外,如果使用Asp.net的朋友,在安裝IIS7的時候一定記得勾選Asp.net,默認不選,也會出現類似的錯誤信息

      如果出現下圖的錯誤,提示服務沒啟動,可以檢查運行環境及后臺程序里的appsettings.json文件。目前已知的比如連接字符串加上  Integrated Security=SSPI 就會有如下的錯誤。

       打開事件查看器:

       

        可以定位到具體錯誤。如下所示是由于數據庫連接字符串錯誤導致的。

       

       

       如果前端請求參數過長或者上傳文件過大的話可以通過在Program中的下述配置更改:

                  //配置文件大小限制
                  services.Configure<FormOptions>(options =>
                  {
                      options.ValueLengthLimit = int.MaxValue;
                      options.MultipartBodyLengthLimit = int.MaxValue;// 60000000; 
                      options.MultipartHeadersLengthLimit = int.MaxValue;
                  });

      如果是在VS中調試的項目,需要修改項目根目錄 .vs\YundiErp\config\applicationhost.config 中找到<requestFiltering>節點添加

       <requestLimits maxAllowedContentLength="1073741824" />

      如果是發布到IIS上的項目,找到web.config在<system.webServer>節點下添加。注意以后每次發布不要覆蓋掉該web.config

      <?xml version="1.0" encoding="utf-8"?>
      <configuration>
        <system.webServer>
           <security>
            <requestFiltering>
             <!-- 1 GB -->
             <requestLimits maxAllowedContentLength="1073741824" />
            </requestFiltering>
          </security>
         </system.webServer>
      </configuration>

      修改IIS中配置->配置編輯器 system.webServer/serverRuntime 節點

       

       修改ASP中修改最大請求實體主體限制

       

       

       

      https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.aspnetcore.http.features.formoptions.valuelengthlimit?view=aspnetcore-7.0

       

      另外如果服務器重啟,訪問網站出現500相關錯誤的話,可以嘗試著將后臺網站項目停止,應用程序池停用,再重新啟用,重啟網站。

       

      前臺訪問靜態資源都是OK,訪問后臺接口都是404的話,這個情況一般都是URL重寫未生效。注意留意“Application Request Routing”--“Proxy”--“Server Proxy Settings...”,-“Enable proxy” 是不是勾選狀態。

       

      另外應用程序池很多時候默認是這樣的:

       

      如果需要加載用戶配置文件,需要切換為True.

       

       .net core api 詳細部署相關 可以參考這篇文章,.net core 3.1-9.0 都適合,無非是安裝的包的版本不一樣:http://www.rzrgm.cn/riddly/p/13747989.html


      參考鏈接:https://blog.csdn.net/weixin_43721856/article/details/128248201

                       http://www.rzrgm.cn/mzflog/p/16039932.html

      posted @ 2023-03-14 17:32  淺巷深念  閱讀(3120)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产日产免费高清欧美一区| 九九热在线免费观看视频| 厦门市| 日韩精品亚洲专区在线播放| 久久久久久综合网天天| 国产精品不卡区一区二| 国产美女裸身网站免费观看视频 | 蜜臀久久精品亚洲一区| 国产黄色精品一区二区三区| 免费a级黄毛片| 深夜av免费在线观看| 国产普通话对白刺激| 亚洲国产综合性亚洲综合性| 国产四虎永久免费观看| 欧美人与性动交ccoo| 91精品国产色综合久久不| 福利一区二区在线视频| 亚洲成人四虎在线播放| 熟女人妻aⅴ一区二区三区电影| 肥大bbwbbw高潮抽搐| 国产不卡精品视频男人的天堂 | 国产又色又爽又黄的| 久久精品女人天堂av| 国产精品伦理一区二区三| 日本高清中文字幕免费一区二区| 国产普通话对白刺激| 成年午夜无码av片在线观看| 亚洲成人av在线资源| 老师扒下内裤让我爽了一夜| 99久久国产成人免费网站| 四虎精品国产精品亚洲精| 内地自拍三级在线观看| 久久91精品牛牛| 性高湖久久久久久久久| 无码专区 人妻系列 在线| 久久国产乱子伦免费精品无码| 免费无码VA一区二区三区| 国产蜜臀久久av一区二区| 亚洲国产高清av网站| 一区二区三区四区五区自拍| 欧美老熟妇又粗又大|