かつては、プロジェクトを公開する際にはファイルをサイトディレクトリにコピー&ペーストしたり、FTPでサイトディレクトリにアップロードしたりしていましたが、現在では継続的統合、自動化された運用・保守、自動公開の登場により、出版プロジェクトも日々変化しています。
この記事では、VS 2019を通じてリモートのIISサイトにリモートで公開する方法を説明しています。
リモートサーバーシステム:Windows Server 2019 64ビット
サーバー構成
1. IISを追加し、.NET フレームワークをインストールする(省略)
2. Web Deployのダウンロードとインストール
Web Deployは、以下のアドレスでウェブプロジェクトをローカルおよびリモートでデプロイするために使用できます:ハイパーリンクのログインが見えます。
設置時に選択「完了」インストール後、下図のようにサービス内に「Web Management Service」サービスが表示されます。
インストールされていない場合、リモート公開時にVSは以下のエラーを出します:
--------------------------- Microsoft Visual Studio --------------------------- リモートコンピュータへの接続に失敗しました(「xx」) リモートマシンにWeb Deployをインストールし、必要なプロセス(「Web Management Service」)を開始してください。 詳細はこちらをご覧ください:https://go.microsoft.com/fwlink/ ... ATION_NOT_REACHABLE。 リモートサーバーに接続できません --------------------------- 確かですか ---------------------------
3. 「IIS管理スクリプトとツール」をインストールする
管理ツール> Web Server(IIS)>サーバーロールを選択し、IIS管理スクリプトおよびツールの役割を選択し、「次へ」をクリックしてロールをインストールしてください。
4. IISはリモート接続を可能にします
IIS内で管理サービスを特定し、リモート接続を有効にしてください。以下の画像に示されています:
(注:ファイアウォールとセキュリティグループで8172の受信ポートを開いてください)
5. 新しいIISサイトの構築
以下の図のように、test1という新しいサイトを作成します。
6. IISが管理ユーザーを追加
以下の画像に示すように、IISマネージャーユーザーを追加してください:
同時に、test1サイトでは下図のように認可を追加します。
認証を追加しない場合、リモートで公開した際に以下のエラーが報告されます:
--------------------------- Microsoft Visual Studio --------------------------- ウェブ管理サービスを使ってリモートコンピュータ(「xxx」)に接続しましたが、認証できていません。 正しいユーザー名とパスワードを使用し、接続しているサイトがすでに存在していること、そして認証情報を持つユーザーがサイトにアクセスできることを確認してください。 詳細はこちらをご覧ください:https://go.microsoft.com/fwlink/ ... R_USER_UNAUTHORIZED。 リモートサーバーはエラーを返します:(401) 未承認。 --------------------------- 確かですか --------------------------- MVCプロジェクトのリリース ASP.NET
まず、VS 2019を使ってWebAutomatedDeploymentという名前の新しい.NET 4.6.2 asp.net mvcプロジェクトを作成します。
2つの新しいライブラリを作成し、ウェブサイトプログラムが同時にこれら2つのライブラリを参照します。 (シミュレーションが公式プロジェクトに近いため、2つのライブラリを作成・参照してください)
以下のようにプロジェクトを始めてみてください:
プロジェクトを右クリックし、「公開」→「ウェブサーバー(IIS)>ウェブ展開」を選択し、以下の図のようにサーバー情報を入力します。
接続とテストの合格を確認しましょう。以下の画像に示されています:
公開しようとしたとき、エラーは以下の通りでした:
ウェブ展開の課題は失敗しました。 ((2020/10/9 11:34:38)リモートコンピュータでのエラー処理リクエスト。 )
(2020/10/9 11:34:38) リモートコンピュータでのエラー処理リクエスト。 サーバーがリクエストの処理に問題を抱えています。 詳細はサーバー管理者にお問い合わせください。 WebAutomatedDeployment 0 以下の図のように、サーバーイベントビューアを通じて特定のエラーを確認できます:
User: itsvse クライアントIP:xxx
Content-Type: application/msdeploy
Version: 9.0.0.0
MSDeploy.VersionMin: 7.1.600.0
MSDeploy.VersionMax: 9.0.3802.0
MSDeploy.Method: Sync
MSDeploy.RequestId: def8d9f7-1a72-4b19-8b75-919f8c6a9604
MSDeploy.RequestCulture: zh-CN
MSDeploy.RequestUICulture: zh-CN
ServerVersion: 9.0.1973.0
Skip: objectName="^configProtectedData$"
Provider: auto, Path: トレースデプロイメントエージェントの例外がクライアントに伝播されました。 リクエストIDは「def8d9f7-1a72-4b19-8b75-919f8c6a9604」、リクエストタイムスタンプ:「2020/10/9 11:51:29」。 エラーの詳細:
System.UnauthorizedAccessException: 尝试执行未经授权的操作。 System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType type, string name, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner, SecurityIdentifier group、GenericAcl sacl、GenericAcl dacl) at System.Security.AccessControl.NativeObjectSecurity.Persist(文字列名、SafeHandle handle、AccessControlSections includeSections、Object exceptionContext) System.Security.AccessControl.NativeObjectSecurity.Persist(文字列名、AccessControlSections includeSections、Object exceptionContext) at Microsoft.Web.Deployment.FileSystemSecurityEx.Persist(String path, Boolean isFile) at Microsoft.Web.Deployment.SetAclProvider.Add(DeploymentObject source, Boolean whatIf) Microsoft .Web.Deployment.DeploymentObject.Update(DeploymentObject source, DeploymentSyncContext syncContext) Microsoft で .Web.Deployment.DeploymentSyncContext.HandleUpdate(DeploymentObject destObject, DeploymentObject sourceObject) Microsoft .Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source) Microsoft で .Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject) In Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable'1 syncPassId, String syncSessionId) at Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable'1 passId, String user, String siteName) Microsoft にて https.Web.Deployment.DeploymentAgent.HandleRequestWorker(DeploymentAgentAsyncData asyncData) Microsoft にて https.web.Deployment.DeploymentAgent.HandleRequest(DeploymentAgentAsyncData asyncData) 解決:
VS Toolsを再起動し、公開をクリックすると、次の画像が表示されます:
チェックこの証明書はVisual Studiaでの今後のセッションのために保存してください「解決できる」と。
最初に公開されたときは、すべてのファイルをサーバーにアップロードする必要があり、下の図のように遅くなっていました。
Index.cshtmlページファイルを修正して「再公開」をクリックしてみると、以下の3つのファイルのみが更新されます。下図に示されています。
ウェブサイトを更新すると、以下のように更新されていることがわかります:
(終わり)
|