WebView2 応用テクニック
レスポンスの内容を変更する
			WebView2からのリクエストを行った場合に、サーバからの実際のレスポンス内容ではなく、任意に設定した内容で受け取ることができます。
			
			まずはCoreWebView2InitializationCompletedイベントハンドラにメソッドを追加します。
			WebView2の初期化が完了したときに発生するイベントです。
			
				//C#
private void Request_Load(object sender, EventArgs e)
{
webView2.CoreWebView2InitializationCompleted += webView2CoreWebView2InitializationCompleted;
}
			
			private void Request_Load(object sender, EventArgs e)
{
webView2.CoreWebView2InitializationCompleted += webView2CoreWebView2InitializationCompleted;
}
追加したメソッド内で以下の処理を行います。
・リクエストが発生した場合に処理を行うために、
WebResourceRequestedイベントハンドラにメソッドを追加します。・
WebResourceRequestedイベントを発生させるための条件として、URL/コンテキストの種類を指定できます。
				//C#
private void webView2CoreWebView2InitializationCompleted(object sender, EventArgs e)
{
webView2.CoreWebView2.AddWebResourceRequestedFilter("*", Microsoft.Web.WebView2.Core.CoreWebView2WebResourceContext.All);
webView2.CoreWebView2.WebResourceRequested += CoreWebView2_WebResourceRequested;
}
			
			private void webView2CoreWebView2InitializationCompleted(object sender, EventArgs e)
{
webView2.CoreWebView2.AddWebResourceRequestedFilter("*", Microsoft.Web.WebView2.Core.CoreWebView2WebResourceContext.All);
webView2.CoreWebView2.WebResourceRequested += CoreWebView2_WebResourceRequested;
}
URL部分には、一致する文字列の指定だけではなく、ワイルドカードとして「*」や「?」を含めることができます。
コンテキスト部分は、すべてを対象とするならAllを指定しますが、画像ならImage、スタイルシートならStylesheetなど、個別に指定することもできます。
詳しい値は下記の参考リンクをみてください。
WebResourceRequestedイベントで実行されるメソッドには、リクエストで返却するデータを作成します。第二引数の
e.Responseに作成した値を設定します。
				//C#
private void CoreWebView2_WebResourceRequested(object sender, Microsoft.Web.WebView2.Core.CoreWebView2WebResourceRequestedEventArgs e)
{
e.Response = webView2.CoreWebView2.Environment.CreateWebResourceResponse(
Content: new System.IO.MemoryStream(Encoding.UTF8.GetBytes($"<html><body><div>WebView2 resoponse test</div><</body></html>")),
StatusCode: 200,
ReasonPhrase: "OK",
Headers: $"Content-Type: text/html, X-Hello:World");
}
			
			
		private void CoreWebView2_WebResourceRequested(object sender, Microsoft.Web.WebView2.Core.CoreWebView2WebResourceRequestedEventArgs e)
{
e.Response = webView2.CoreWebView2.Environment.CreateWebResourceResponse(
Content: new System.IO.MemoryStream(Encoding.UTF8.GetBytes($"<html><body><div>WebView2 resoponse test</div><</body></html>")),
StatusCode: 200,
ReasonPhrase: "OK",
Headers: $"Content-Type: text/html, X-Hello:World");
}
サンプル
						Public Class Response
							Private Sub Response_Load(sender As Object, e As EventArgs) Handles MyBase.Load
								InitializeAsync()
								AddHandler webView2.CoreWebView2InitializationCompleted, AddressOf webView2CoreWebView2InitializationCompleted
							End Sub
						
							Private Async Sub InitializeAsync()
								Await webView2.EnsureCoreWebView2Async(Nothing)
							End Sub
						
							Private Sub webView2CoreWebView2InitializationCompleted(sender As Object, e As EventArgs)
						
								webView2.CoreWebView2.AddWebResourceRequestedFilter("*", Microsoft.Web.WebView2.Core.CoreWebView2WebResourceContext.All)
								AddHandler webView2.CoreWebView2.WebResourceRequested, AddressOf CoreWebView2_WebResourceRequested
						
							End Sub
						
							Private Sub CoreWebView2_WebResourceRequested(sender As Object, e As Microsoft.Web.WebView2.Core.CoreWebView2WebResourceRequestedEventArgs)
						
								Dim uriString = e.Request.Uri
						
								e.Response = webView2.CoreWebView2.Environment.CreateWebResourceResponse(
										Content:=New System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes($"Hello, WebView2!")),
										StatusCode:=200,
										ReasonPhrase:="OK",
										Headers:=$"Content-Type: text/html, X-Hello:World")
						
							End Sub
						
							Private Sub btnWVOpen_Click(sender As Object, e As EventArgs) Handles btnWVOpen.Click
						
								If webView2.CoreWebView2 Is Nothing Then Return
						
								webView2.CoreWebView2.Navigate("https://web.biz-prog.net/test/testpage.html")
						
							End Sub
							
						End Class
					
				
						public partial class Form1 : Form
						{
							public Form1()
							{
								InitializeComponent();
							}
					
							private void Form1_Load(object sender, EventArgs e)
							{
								InitializeAsync();
								webView2.CoreWebView2InitializationCompleted += webView2CoreWebView2InitializationCompleted;
							}
					
							private async void InitializeAsync()
							{
								await webView2.EnsureCoreWebView2Async(null);
							}
							private void webView2CoreWebView2InitializationCompleted(object sender, EventArgs e)
							{
								webView2.CoreWebView2.AddWebResourceRequestedFilter("*", Microsoft.Web.WebView2.Core.CoreWebView2WebResourceContext.All);
								webView2.CoreWebView2.WebResourceRequested += CoreWebView2_WebResourceRequested;
							}
					
							private void CoreWebView2_WebResourceRequested(object sender, Microsoft.Web.WebView2.Core.CoreWebView2WebResourceRequestedEventArgs e)
							{
								var uriString = e.Request.Uri;
					
								e.Response = webView2.CoreWebView2.Environment.CreateWebResourceResponse(
									Content: new System.IO.MemoryStream(Encoding.UTF8.GetBytes($"<html><body><div>WebView2 resoponse test</div><</body></html>")),
									StatusCode: 200,
									ReasonPhrase: "OK",
									Headers: $"Content-Type: text/html, X-Hello:World");
							}
							private void btnWVOpen_Click(object sender, EventArgs e)
							{
								if (webView2.CoreWebView2 == null)
								{
									MessageBox.Show("err");
									return;
								}
					
								webView2.CoreWebView2.Navigate("https://web.biz-prog.net/test/testpage.html");
							}
						}
					
				