[해결됨]webview2 에서 브라우저 플래그를 이용하는법 아시는분 있나요?

로컬 https를 이용하기위해서 아래와 같이 했는데

var environmentOptions = new CoreWebView2EnvironmentOptions()
    {
      AdditionalBrowserArguments = "--allow-insecure-localhost"
    };

    CoreWebView2Environment environment = await CoreWebView2Environment.CreateAsync(options:environmentOptions);

    await webView21.EnsureCoreWebView2Async(environment);

이렇게 하면은
image

/ System.Runtime.InteropServices.Marshal.ThrowExceptionForHR(Int32 errorCode)
/ Microsoft.Web.WebView2.Core.CoreWebView2Environment.d__98.MoveNext()
/ Microsoft.Web.WebView2.WinForms.WebView2.d__25.MoveNext()

이렇게 오류가 생기면서 꺼집니다

공식문서를 봐도 해당 함수 설명을 봐도 무슨소리인지 잘 몰라서 몇일째 검색 후 테스트만 반복중이네요…
아시는분이 있다면 지식을 공유해주신다면 감사하겠습니다

관련 링크

이 링크의 내용과 유사한 오류로 보입니다.

COMException 0x8007139F in Microsoft.Web.WebView2.WinForms.WebView2.d__13.MoveNext · Issue #3008 · MicrosoftEdge/WebView2Feedback (github.com)

발생 원인

일단 위 링크에서의 원인은 아래와 같았는데요.

  • WebView2 SDK와 Runtime의 버전 불일치
  • High DPI scaling 관련 이슈

해결책

WebView2 버전 일치

먼저 시스템에 설치된 WebView2 버전과 패키지의 버전을 일치시켜 주세요.
버전 W.X.Y.ZY.Z 부분을 최대한 맞추시면 될 듯 합니다.

시스템 WebView2 Runtime 버전 확인

제어판의 프로그램 추가/제거 메뉴에서 Microsoft Edge WebView2 Runtime의 버전 확인합니다.

WebView2 패키지 버전 확인

프로젝트에 설치된 패키지 버전을 확인합니다.

High DPI scaling 관련 레지스트리 삭제

해당 링크에서는 High DPI scaling 관련 이슈가 있었는데요, Regedit에서 아래 레지스트리 항목을 삭제해서 문제를 해결했다고 합니다.

추가 조치

해당 예외가 발생 할 때 WebView2로부터 출력 되는 메시지의 종류에 따라 다르게 조치해야 할 수도 있습니다.

WebView2 네이티브 로그 출력

프로젝트 디버깅 옵션에서 네이티브 코드 디버깅(Enable native code debugging)을 활성화 하시면 출력 창을 통해 COMException 0x8007139F과 관련한 네이티브 레벨에서 발생한 WebView2의 오류 메시지를 확인하실 수 있습니다.

6 Likes

답변 감사합니다
위에 방법은 시도 해 보았으나 다른문제 인듯 보여요
오류에 세부설명이 너무 두루뭉실해서 해결하기 힘드니 해당 방식은 그냥 포기하는걸로 해야할듯 싶어요

출력되는 WebView2로 시작되는 로그 중 특이사항은 없나요?

네 딱히 특이한건 안보였어요
그래서
설마해서
obj bin 지우고 ide 재실행하니 되네요…

갈수록 ide가 버그가 심한듯한 기분…

p.s

msedgewebview2.exe 이게 주요한 원인인듯 보이네요

cmd에서

taskkill /im msedgewebview2.exe /f

한뒤에 재실행하면 굳이 obj bin 안날려도 된다는걸 알게됨…

최종적으로 제가 사용한 인수들 올려볼게요 쓰실분은 쓰세요

var environmentOptions =  new CoreWebView2EnvironmentOptions(
  "--ignore-certificate-errors " // 인증 에러 무시
  + "--allow-insecure-localhost " // 로컬 보안 연결 허용
  + "--disable-notifications " // 알림 비활성
  + "--disable-popup-blocking " // 팝업 차단 비활성
  + "--disable-web-security " // 웹 보안 비활성
  + "--disable-blink-features=AutomationControlled") // 자동화 탐지 방지
{
  AreBrowserExtensionsEnabled = true, // 확장 사용
};
var environment = await CoreWebView2Environment.CreateAsync(options:environmentOptions);
await webView21.EnsureCoreWebView2Async(environment);
await webView21.CoreWebView2.Profile.AddBrowserExtensionAsync("확장");

확장 메니페스트의 일부분

"content_security_policy": {
    "extension_pages": "connect-src 'self' wss://127.0.0.1:*;",
  },

이렇게 하면 확장에서 wss 사용이 가능해지네요

2 Likes