dotnet / runtime

.NET is a cross-platform runtime for cloud, mobile, desktop, and IoT apps.
https://docs.microsoft.com/dotnet/core/
MIT License
14.64k stars 4.57k forks source link

Blazor client side web debugging fails to function when run within IIS #101554

Open xantari opened 3 months ago

xantari commented 3 months ago

Is there an existing issue for this?

Describe the bug

When attempting to debug a local IIS hosted web application running blazor you get an error when attempting to debug the blazor razor component.

Kestrel debugging works fine. However it is broken in IIS mode when running under an SSL certificate:

Unable to launch browser: \"Could not open wss://localdev.arrt.org:443/_framework/debug/ws-proxy?browser=ws%3A%2F%2F127.0.0.1%3A34840%2Fdevtools%2Fbrowser%2Fd2b99056-84ce-433a-819b-d7df11de4a00\

Currently the only work around is to remove the following from the launchSettings.json, but then blazor components using WebAssemblyPrerendered are no longer able to be debugged.

"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",

Here is the log indicating it is unable to open a websocket connection.

visualstudio-js-debugger.txt

NOTE: IIS does have Websocket Protocol enabled in windows, so that is not the issue. Other websocket activities work fine, just not the debugging using inspectUri parameter.

This may be related to this issue: https://github.com/dotnet/runtime/issues/96239

However the fix indicated in that issue does not work for me. This is the fix recommended (updated example to LocalDevelopment):

<DebuggerSupport Condition="'$(Configuration)' == 'LocalDevelopment'">true</DebuggerSupport>

Expected Behavior

Client side debugging should work without issue. The "inspectUri": "{wsProtocol}://{url.hostname}:443/_framework/debug/ws-proxy?browser={browserInspectUri}" line should also work without issue when running within IIS under an SSL certificate.

Steps To Reproduce

  1. Take attached project and extract it to C:\TFS\BlazorApp1
  2. Setup a web application in IIS with a legitimate SSL certificate attached to it and point it to the C:\TFS\BlazorApp1 folder
  3. Set your local hosts file to resolve a valid domain to that SSL certificate so that it resolves on your local machine.
  4. Update the launchSettings.json to use your domain (in the sample it is set to localdev.arrt.org, you would want to change it to your valid domain).
  5. Attempt to launch "IIS (LocalDevelopment) - localdev.arrt.org". Your browser should hang.

Exceptions (if any)

image

.NET Version

.NET 8.0.3

Anything else?

Visual Studio 2022. 17.9.6

Sample Project

BlazorApp1.zip

dotnet-policy-service[bot] commented 3 months ago

Tagging subscribers to this area: @thaystg See info in area-owners.md if you want to be subscribed.

thaystg commented 1 month ago

Is this happening yet?

thaystg commented 3 weeks ago

Please reopen the issue if this is sill happening.

xantari commented 3 weeks ago

Sorry, I didn't respond to the first notice. Yes this issue is still happening.