Blazor WebAssembly 3.2.0 Preview 3 release now available

Daniel Roth

Daniel

A new preview update of Blazor WebAssembly is now available! Here’s what’s new in this release:

  • Debugging in Visual Studio and Visual Studio Code
  • Auto-rebuild in Visual Studio
  • Configuration
  • New HttpClient extension methods for JSON handling

Get started

To get started with Blazor WebAssembly 3.2.0 Preview 3 install the latest .NET Core 3.1 SDK.

NOTE: Version 3.1.201 or later of the .NET Core SDK is required to use this Blazor WebAssembly release! Make sure you have the correct .NET Core SDK version by running dotnet --version from a command prompt.

Once you have the appropriate .NET Core SDK installed, run the following command to install the updated Blazor WebAssembly template:

dotnet new -i Microsoft.AspNetCore.Components.WebAssembly.Templates::3.2.0-preview3.20168.3

If you’re on Windows using Visual Studio, we recommend installing the latest preview of Visual Studio 2019 16.6. Installing Visual Studio 2019 16.6 Preview 2 or later will also install an updated version of the .NET Core 3.1 SDK that includes the Blazor WebAssembly template, so you don’t need to separately install it.

That’s it! You can find additional docs and samples on https://blazor.net.

Upgrade an existing project

To upgrade an existing Blazor WebAssembly app from 3.2.0 Preview 2 to 3.2.0 Preview 3:

  • Update all Microsoft.AspNetCore.Components.WebAssembly.* package references to version 3.2.0-preview3.20168.3.
  • Update all Microsoft.AspNetCore.Blazor.* package references to version 3.2.0-preview3.20168.3.

You’re all set – easy peasy!

Debugging

You can now debug Blazor WebAssembly apps directly from Visual Studio and Visual Studio Code. You can set breakpoints, inspect locals, and step through your code. You can also simultaneously debug your Blazor WebAssembly app and any .NET code running on the server. Using the browser dev tools to debug your Blazor WebAssembly apps is also still supported.

Enable debugging

To enable debugging in an existing Blazor WebAssembly app, update launchSettings.json in the startup project of your app to include the following inspectUri property in each launch profile:

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

This property enables the IDE to detect that this is a Blazor WebAssembly app and instructs the script debugging infrastructure to connect to the browser through Blazor’s debugging proxy.

Once updated, your launchSettings.json file should look something like this:

{
    "iisSettings": {
      "windowsAuthentication": false,
      "anonymousAuthentication": true,
      "iisExpress": {
        "applicationUrl": "http://localhost:50454",
        "sslPort": 44399
      }
    },
    "profiles": {
      "IIS Express": {
        "commandName": "IISExpress",
        "launchBrowser": true,
        "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
        "environmentVariables": {
          "ASPNETCORE_ENVIRONMENT": "Development"
        }
      },
      "BlazorApp1.Server": {
        "commandName": "Project",
        "launchBrowser": true,
        "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
        "applicationUrl": "https://localhost:5001;http://localhost:5000",
        "environmentVariables": {
          "ASPNETCORE_ENVIRONMENT": "Development"
        }
      }
    }
  }

Visual Studio

To debug a Blazor WebAssembly app in Visual Studio:

  1. Ensure you have installed the latest preview release of Visual Studio 2019 16.6 or later.
  2. Create a new ASP.NET Core hosted Blazor WebAssembly app.
  3. Hit F5 to run the app in the debugger.
  4. Set a breakpoint in Counter.razor in the IncrementCount method.
  5. Browser to the Counter tab and click the button to hit the breakpoint:

    Debug Counter

  6. Check out the value of the currentCount field in the locals window:

    View locals

  7. Hit F5 to continue execution.

While debugging your Blazor WebAssembly app you can also debug your server code:

  1. Set a breakpoint in the FetchData.razor page in OnInitializedAsync.
  2. Set a breakpoint in the WeatherForecastController in the Get action method.
  3. Browser to the Fetch Data tab to hit the first breakpoint in the FetchData component just before it issues an HTTP request to the server:

    Debug Fetch Data

  4. Hit F5 to continue execution and then hit the breakpoint on the server in the WeatherForecastController:

    Debug server

  5. Hit F5 again to let execution continue and see the weather forecast table rendered.

Visual Studio Code

To debug a Blazor WebAssembly app in Visual Studio Code:

  1. Install the C# extension and the JavaScript Debugger (Nightly) extension with the debug.javascript.usePreview setting set to true.

    Extensions

    JS preview debugger

  2. Open an existing Blazor WebAssembly app with debugging enabled.

    a. If you get the following notification that additional setup is required to enable debugging, recheck that you have the correct extensions installed and JavaScript preview debugging enabled and then reload the window:

    Additional setup requried

    b. A notification should offer to add required assets for building and debugging to the app. Select “Yes”.

    Add required assets

  3. Starting the app in the debugger is then a two-step process:

    a. Start the app first using the “.NET Core Launch (Blazor Standalone)” launch configuration.

    b. Then start the browser using the “.NET Core Debug Blazor Web Assembly in Chrome” launch configuration (requires Chrome). To use the latest stable release of Edge instead of Chrome, change the type of the launch configuration in .vscode/launch.json from pwa-chrome to pwa-msedge.

  4. Set a breakpoint in the IncrementCount method in the Counter component and then select the button to hit the breakpoint:

    Debug Counter in VS Code

Known limitations

There are a number of limitations with the current debugging experience in Visual Studio and Visual Studio Code. The following debugging features are not yet fully implemented:

  • Inspecting arrays
  • Hovering to inspect members
  • Step debugging into or out of managed code
  • Full support for inspecting value types
  • Breaking on unhandled exceptions
  • Hitting breakpoints during app startup
  • Debugging an app with a service worker

We expect to continue to improve the debugging experience in future releases. We appreciate your feedback to help us get the Blazor WebAssembly debugging experience right!

Auto-rebuild in Visual Studio

Visual Studio 2019 16.6 will watch for file changes in .cs and .razor files across the solution and automatically rebuild and restart the app so that the changes can be seen by simply refreshing the browser. This enables auto-rebuild support for ASP.NET Core hosted Blazor WebAssembly projects and Razor Class Libraries. Instead of manually rebuilding and restarting the app when making code changes, just edit, save, and then refresh the browser.

To use auto-rebuild, run the app using IIS Express and without the debugger attached (Ctrl-F5 instead of F5).

Auto-rebuild is not yet enabled for standalone Blazor WebAssembly projects. With standalone Blazor WebAssembly apps, you can instead edit files, rebuild the app, and then refresh the browser without restarting the web server.

Configuration

Blazor WebAssembly apps now have built-in support for loading configuration data from appsettings.json and environment specific configuration data from appsettings.{environment}.json.

To add configuration data to your Blazor WebAssembly app:

  1. Add an appsettings.json file in the wwwroot folder of your Blazor WebAssembly app:
{
    "message": "Hello from config!"
}
  1. Inject an IConfiguration instance into your components to access the configuration data.
@page "/"
@using Microsoft.Extensions.Configuration
@inject IConfiguration Configuration

<h1>Configuration example</h1>

<p>@Configuration["message"]</p>
  1. Run the app to see the configured message displayed on the home page.
  2. To optionally override this configuration with values specific to the Development environment, add an appsettings.Development.json to your wwwroot folder:
{
    "message": "Hello from Development config!"
}
  1. If you now run the app in Development, you’ll see the new message.

Note: Blazor WebAssembly apps load the configuration data by downloading the JSON files to the browser, so these configuration files must be publicly addressable. Do not store secrets in these configuration files, as they are public and can be viewed by anyone.

New HttpClient extension methods for JSON handling

The .NET team has been hard at work creating a full set of new extension methods for HttpClient that handle JSON serialization and deserialization using System.Text.Json. These extension methods are now available in preview with the System.Net.Http.Json package and they will replace the existing helper methods in the Microsoft.AspNetCore.Blazor.HttpClient package. We haven’t updated the Blazor WebAssembly template yet to use the new extension methods, but we will in our next Blazor WebAssembly preview update.

You can try the new extension methods yourself by replacing the Microsoft.AspNetCore.Blazor.HttpClient package with the newer System.Net.Http.Json package. Then add @using System.Net.Http.Json to your _Imports.razor file and update your code as follows:

Microsoft.AspNetCore.Blazor.HttpClient System.Net.Http.Json
GetJsonAsync GetFromJsonAsync
PostJsonAsync PostAsJsonAsync
PutJsonAsync PutAsJsonAsync

The updated implementation of the FetchData component in the default Blazor WebAssembly template looks like this:

@code {
    private WeatherForecast[] forecasts;

    protected override async Task OnInitializedAsync()
    {
        forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("WeatherForecast");
    }
}

System.Net.Http.Json also provides a JsonContent class that can be used for sending serialized JSON, as well as convenient helper methods for reading JSON from an HttpContent instance.

Look for more details on System.Net.Http.Json to be published soon on the .NET blog.

Known issues

There are a few known issues with this release that you may run into:

  • When building a Blazor WebAssembly app using an older .NET Core SDK you may see the following build error:
    error MSB4018: The "ResolveBlazorRuntimeDependencies" task failed unexpectedly.
    error MSB4018: System.IO.FileNotFoundException: Could not load file or assembly '\BlazorApp1\obj\Debug\netstandard2.1\BlazorApp1.dll'. The system cannot find the file specified.
    error MSB4018: File name: '\BlazorApp1\obj\Debug\netstandard2.1\BlazorApp1.dll' 
    error MSB4018:    at System.Reflection.AssemblyName.nGetFileInformation(String s)
    error MSB4018:    at System.Reflection.AssemblyName.GetAssemblyName(String assemblyFile)
    error MSB4018:    at Microsoft.AspNetCore.Components.WebAssembly.Build.ResolveBlazorRuntimeDependencies.GetAssemblyName(String assemblyPath)
    error MSB4018:    at Microsoft.AspNetCore.Components.WebAssembly.Build.ResolveBlazorRuntimeDependencies.ResolveRuntimeDependenciesCore(String entryPoint, IEnumerable`1 applicationDependencies, IEnumerable`1 monoBclAssemblies)
    error MSB4018:    at Microsoft.AspNetCore.Components.WebAssembly.Build.ResolveBlazorRuntimeDependencies.Execute()
    error MSB4018:    at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
    error MSB4018:    at Microsoft.Build.BackEnd.TaskBuilder.ExecuteInstantiatedTask(ITaskExecutionHost taskExecutionHost, TaskLoggingContext taskLoggingContext, TaskHost taskHost, ItemBucket bucket, TaskExecutionMode howToExecuteTask)
    

    To address this issue, update to version 3.1.201 or later of the .NET Core 3.1 SDK.

  • You may see the following warning when building from the command-line:
    CSC : warning CS8034: Unable to load Analyzer assembly C:\Users\user\.nuget\packages\microsoft.aspnetcore.components.analyzers\3.1.0\analyzers\dotnet\cs\Microsoft.AspNetCore.Components.Analyzers.dll : Assembly with same name is already loaded
    

    To address this issue, update to your package reference to Microsoft.AspNetCore.Components to 3.1.3 or newer. If your project reference the Microsoft.AspNetCore.Components package through a transitive package reference that has not been updated, you can add a reference in your project to resolve the issue in your project.

  • The following error may occur when publishing an ASP.NET Core hosted Blazor app with the .NET IL linker disabled:
    An assembly specified in the application dependencies manifest (BlazorApp1.Server.deps.json) was not found
    

    This error occurs when assemblies shared by the server and Blazor client project get removed during publish (see https://github.com/dotnet/aspnetcore/issues/19926).

    To workaround this issue, ensure that you publish with the .NET IL linker enabled. To publish with the linker enabled:

    • Publish using a Release build configuration: dotnet publish -c Release. The .NET IL linker is automatically run for Release builds, but not for Debug builds.
    • Don’t set BlazorWebAssemblyEnableLinking to false in your client project file.

    If you’re hitting issues running with the linker disabled, you may need to configure the linker to preserve code that is being called using reflection. See https://docs.microsoft.com/aspnet/core/host-and-deploy/blazor/configure-linker for details.

Feedback

We hope you enjoy the new features in this preview release of Blazor WebAssembly! Please let us know what you think by filing issues on GitHub.

Thanks for trying out Blazor!

147 comments

Leave a comment

  • Avatar
    Vladimir Chirikov

    Hi Daniel, first of all check section about vs code settings, I think should be pwa-msedge(in text was pwa-edge).
    And it didn’t work anyway from vs code. I don’t have chrome, only ms edge (and my default browser is Firefox).

  • Wade Balzer
    Wade Balzer

    Hi Daniel,

    I have the same issue out the gate of Preview 3 as before. VS 2019 v16.5.1 CLI v3.1.201 sdk v3.1.201. This time, the only options selected in WASM was ASP Core Hosted, and Individual User Accounts. I create project, and used IIS Express to run. Clicking the Register link produced the same kind of error with the option to reload.

    I also followed the recommendation on https://github.com/dotnet/aspnetcore/issues/20078, but that didn’t help. So the issue isn’t resolved for me quite yet. The only other thing that I could possibly do is create a brand new Win10 image in Hyper-V, install VS 2019 v16.5.1, v3.1.201 sdk, and Preview 3, create a brand new project and see if there is something wacky about my environment, but I usually keep my development images pretty clean.

    HTML1300: Navigation occurred.
    localhost:44338 (1,1)
    
    %cblazor%c Loaded 5.95 MB resources %cThis application was built with linking (tree shaking) disabled. Published applications will be significantly smaller.
    
    mono_wasm_runtime_ready fe00e07a-5519-4dfe-b35a-f867dbaf2e28
    dotnet.3.2.0-preview3.20168.1.js (1,126778)
    
    crit: Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
    blazor.webassembly.js (1,36066)
    
          Unhandled exception rendering component: Invalid calling object
    blazor.webassembly.js (1,36066)
    
          TypeError: Invalid calling object
    blazor.webassembly.js (1,36066)
    
             at Anonymous function (https://localhost:44338/_framework/blazor.webassembly.js:1:9733)
    blazor.webassembly.js (1,36066)
    
             at Promise (native code)
    blazor.webassembly.js (1,36066)
    
             at e.jsCallDispatcher.beginInvokeJSFromDotNet (https://localhost:44338/_framework/blazor.webassembly.js:1:9703)
    blazor.webassembly.js (1,36066)
    
             at _mono_wasm_invoke_js_marshalled (https://localhost:44338/_framework/wasm/dotnet.3.2.0-preview3.20168.1.js:1:161351)
    blazor.webassembly.js (1,36066)
    
             at Module[_mono_wasm_invoke_method] (https://localhost:44338/_framework/wasm/dotnet.3.2.0-preview3.20168.1.js:1:185518)
    blazor.webassembly.js (1,36066)
    
             at BINDING.call_method (https://localhost:44338/_framework/wasm/dotnet.3.2.0-preview3.20168.1.js:1:151353)
    blazor.webassembly.js (1,36066)
    
             at Anonymous function (https://localhost:44338/_framework/wasm/dotnet.3.2.0-preview3.20168.1.js:1:153622)
    blazor.webassembly.js (1,36066)
    
             at beginInvokeDotNetFromJS (https://localhost:44338/_framework/blazor.webassembly.js:1:38066)
    blazor.webassembly.js (1,36066)
    
             at s (https://localhost:44338/_framework/blazor.webassembly.js:1:8432)
    blazor.webassembly.js (1,36066)
    
             at e.invokeMethodAsync (https://localhost:44338/_framework/blazor.webassembly.js:1:9502)
    blazor.webassembly.js (1,36066)
    
    Microsoft.JSInterop.JSException: Invalid calling object
    blazor.webassembly.js (1,36066)
    
    TypeError: Invalid calling object
    blazor.webassembly.js (1,36066)
    
       at Anonymous function (https://localhost:44338/_framework/blazor.webassembly.js:1:9733)
    blazor.webassembly.js (1,36066)
    
       at Promise (native code)
    blazor.webassembly.js (1,36066)
    
       at e.jsCallDispatcher.beginInvokeJSFromDotNet (https://localhost:44338/_framework/blazor.webassembly.js:1:9703)
    blazor.webassembly.js (1,36066)
    
       at _mono_wasm_invoke_js_marshalled (https://localhost:44338/_framework/wasm/dotnet.3.2.0-preview3.20168.1.js:1:161351)
    blazor.webassembly.js (1,36066)
    
       at Module[_mono_wasm_invoke_method] (https://localhost:44338/_framework/wasm/dotnet.3.2.0-preview3.20168.1.js:1:185518)
    blazor.webassembly.js (1,36066)
    
       at BINDING.call_method (https://localhost:44338/_framework/wasm/dotnet.3.2.0-preview3.20168.1.js:1:151353)
    blazor.webassembly.js (1,36066)
    
       at Anonymous function (https://localhost:44338/_framework/wasm/dotnet.3.2.0-preview3.20168.1.js:1:153622)
    blazor.webassembly.js (1,36066)
    
       at beginInvokeDotNetFromJS (https://localhost:44338/_framework/blazor.webassembly.js:1:38066)
    blazor.webassembly.js (1,36066)
    
       at s (https://localhost:44338/_framework/blazor.webassembly.js:1:8432)
    blazor.webassembly.js (1,36066)
    
       at e.invokeMethodAsync (https://localhost:44338/_framework/blazor.webassembly.js:1:9502)
    blazor.webassembly.js (1,36066)
    
      at System.Threading.Tasks.ValueTask`1[TResult].get_Result () <0x2ce1a90 + 0x0002c> in <filename unknown>:0 
    blazor.webassembly.js (1,36066)
    
      at Microsoft.JSInterop.JSRuntimeExtensions.InvokeVoidAsync (Microsoft.JSInterop.IJSRuntime jsRuntime, System.String identifier, System.Object[] args) <0x2acb158 + 0x000e4> in <filename unknown>:0 
    blazor.webassembly.js (1,36066)
    
      at Microsoft.AspNetCore.Components.WebAssembly.Authentication.RemoteAuthenticatorViewCore`1[TAuthenticationState].OnParametersSetAsync () <0x2d79838 + 0x00550> in <filename unknown>:0 
    blazor.webassembly.js (1,36066)
    
      at Microsoft.AspNetCore.Components.ComponentBase.CallStateHasChangedOnAsyncCompletion (System.Threading.Tasks.Task task) <0x2c2c460 + 0x000e6> in <filename unknown>:0 
    blazor.webassembly.js (1,36066)
    
      at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync () <0x2a3e420 + 0x001fc> in <filename unknown>:0 
    blazor.webassembly.js (1,36066)
    
      at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask (System.Threading.Tasks.Task taskToHandle) <0x2c2cfa0 + 0x000c2> in <filename unknown>:0 
    blazor.webassembly.js (1,36066)
    
     

    Thanks,

      • Wade Balzer
        Wade Balzer

        Hi Daniel, I don’t mean to keep pointing at this problem… BUT… @javiercn could not duplicate the problem and closed the ticket under the “works on my machine” rule.

        Since I have a Hyper-V server, I decided to create a brand new Windows 10 Enterprise image based on 1909 released March 17, 2020. I got all the windows updates available. Next, I installed Visual Studio Preview Enterprise v16.6.0 Preview 2, selecting ASP.Net and web development and .NET Core cross-platform development. No other options.

        Next, I opened VS Preview with Admin privilege’s. Under “Get Started”, I click Create a New Project, then select Blazor App. I accept the default name of the Project, “BlazorApp1”, and click Create. I select Blazor WebAssembly App. Under Authentication, I click “Change”, and select “Individual User Accounts”, and click OK. I check the ASP.NET Core Hosted option, noting the Author: Microsoft and Source: Templates 3.1.3, and click Create.

        Under the Package Manager Console, I run “Update-Database”. On Build Succeed. Done., I click the IIS Express button to build and run the Blazor app. I accept the security certificate install, and the BlazorApp1 opens in Microsoft Edge with a nice Hello, world!. At the top, I click “Register”. At the bottom, I get “An unhandled error has occurred.” Reload. I hit F12, and look at the console, and I have the exact same error I have mentioned above.

        Therefore, my conclusion is, this is still a problem because I am able to duplicate it on a brand new install of Windows 10, latest everything and nothing else, plus latest Visual Studio Preview v16.6.0 Preview 2 with only the options I need to create a Blazor project.

        If the problem cannot be recreated from these steps… then it must be hardware, processor, or motherboard. My Hyper-V server is a Dell server using a XEON E5-2695 v4. My normal development workstation is a Intel Core i7-5960X CPU @ 3.00GHz.

        • Daniel Roth
          Daniel RothMicrosoft logo

          Hi Wade. Thanks for these detailed repro steps! Unfortunately, I’m still unable to reproduce the error you’re seeing. One other possibility is that there is something else in your environment that is interfering with the execution of the app. Do you possibly have any browser extensions installed? Or maybe some anti-virus software is interfering?

          • Wade Balzer
            Wade Balzer

            Nope. This is a straight rebuild of Win10 v1909 March 2020 edition, Windows update, then VS 2019 Prev 2. That is it on a Hyper-V. I’m not sure how our environments are that much different from a minimal install on a fresh built virtual machine with nothing else installed.

          • Daniel Roth
            Daniel RothMicrosoft logo

            OK. Does anything suspicious show up in the network trace for the app? Are there any 404s or other errors? To see the full network traffic, first clear out the cache storage using the browser dev tools and then reload the app.

          • Wade Balzer
            Wade Balzer

            It looks like there are no missing files, so I don’t know. I’d be willing to zip up my VM and upload it somewhere it could be imported into hyper-v so that someone could take a look. Perhaps, I didn’t click an essential option when installing VS 2019 Prev2, or maybe there is an essential dependancy that isn’t automatically installed by default that causes a failure:

            at Anonymous function (https://localhost:44377/_framework/blazor.webassembly.js:1:9733)

            But my instuctions above are the exact steps I used to create my VM and reproduce the error.

          • Wade Balzer
            Wade Balzer

            Same issue… either way. I cleared my cache, built solution in release mode, ran Ctrl-F5, and still get the error. Apparently… it is an elusive problem, but duplicatable on my end.

    • Daniel Roth
      Daniel RothMicrosoft logo

      I believe that may be because IdentityServer requires a signing key for issuing tokens. In development we generate a certificate for you, but when you publish you’ll need to set one up in the hosting environment. To verify that this is what’s happening, can you look at the server logs to determine the cause of the server error?

  • Miroslav Parvanov
    Miroslav Parvanov

    Any ideas what I’m doing wrong? I’ve upgraded the project and when I put

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

    inside the launchSettings.json file, I get this error on application run.

    System.ArgumentNullException
      HResult=0x80004003
      Message=Value cannot be null. (Parameter 'input')
      Source=System.Text.RegularExpressions
      StackTrace:
       at System.Text.RegularExpressions.Regex.IsMatch(String input)
       at Microsoft.AspNetCore.Builder.DebugProxyLauncher.c__DisplayClass9_0.g__OnOutputDataReceived|0(Object sender, DataReceivedEventArgs eventArgs)
       at System.Diagnostics.Process.OutputReadNotifyUser(String data)
       at System.Diagnostics.AsyncStreamReader.FlushMessageQueue(Boolean rethrowInNewThread)
       at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
       at System.Diagnostics.AsyncStreamReader.c.b__18_0(Object edi)
       at System.Threading.QueueUserWorkItemCallback.c.b__6_0(QueueUserWorkItemCallback quwi)
       at System.Threading.ExecutionContext.RunForThreadPoolUnsafe[TState](ExecutionContext executionContext, Action`1 callback, TState& state)
       at System.Threading.QueueUserWorkItemCallback.Execute()
       at System.Threading.ThreadPoolWorkQueue.Dispatch()
       at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
    
      This exception was originally thrown at this call stack:
        [External Code]
    
  • Avatar
    Vítězslav Stříbrný

    Hi, I tried to debug in VS (16.6 Preview 2) – it does not work for me well, the code stops at the break-point (IncrementCount method) but the Locals and Watch windows just keeps to display “Busy…” so I cannot inspect variables anyhow. It behaves the same when using Google chrome or MS Edge. Any advise, please?

  • Avatar
    Damiano CuriaMicrosoft logo

    Hi Daniel,
    I have updated my existing project (based on Blazor WASM 3.2.0 Preview 2) and compiled/run in VS 2019 16.6.0 Preview 2.0.
    When I start the project, the browser window opens, then it closes automatically.
    So I have created a completely new Blazor WASM project (including Core backend and PWA, no Authentication yet) and I have the same behavior: when pressing F5, the browser window opens, then it closes automatically.

    In the output window I have the following content:
    Verbose logs are written to:
    C:\Users\dacuri\AppData\Local\Temp\vscode-chrome-debug.txt
    ‘iisexpress.exe’ (CoreCLR: DefaultDomain): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Private.CoreLib.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Users\dacuri\Source\Repos\RobotStudioPOC\CUCU\Server\bin\Debug\netcoreapp3.1\CUCU.Server.dll’. Symbols loaded.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Runtime.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Server.IIS.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Runtime.Extensions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Hosting.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Hosting.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Hosting.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Configuration.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.DependencyInjection.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.DependencyInjection.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Logging.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Collections.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\netstandard.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.ComponentModel.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.IO.FileSystem.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Hosting.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Configuration.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Configuration.EnvironmentVariables.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Primitives.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Threading.Tasks.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Linq.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Threading.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Server.Kestrel.Core.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Server.Kestrel.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Runtime.InteropServices.RuntimeInformation.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Server.IISIntegration.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Configuration.CommandLine.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.FileProviders.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.FileProviders.Physical.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Memory.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Configuration.FileExtensions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Configuration.Json.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Configuration.UserSecrets.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Runtime.InteropServices.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Configuration.Binder.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Private.Uri.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Http.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.FileProviders.Composite.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Xml.XDocument.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Private.Xml.Linq.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Private.Xml.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Threading.Thread.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Security.Cryptography.Algorithms.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Text.Encoding.Extensions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.IO.FileSystem.Watcher.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.ComponentModel.Primitives.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Collections.Concurrent.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.FileSystemGlobbing.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Threading.Timer.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Threading.Overlapped.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\Microsoft.Win32.Primitives.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Text.Json.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Buffers.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Numerics.Vectors.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Runtime.CompilerServices.Unsafe.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Options.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Logging.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Logging.EventLog.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Logging.Configuration.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Options.ConfigurationExtensions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Logging.Console.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Logging.Debug.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Logging.EventSource.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Diagnostics.Tracing.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Diagnostics.DiagnosticSource.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Http.Features.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Http.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Users\dacuri\Desktop\VS2019 P2\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\Microsoft.IntelliTrace.TelemetryObserver.Common.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Users\dacuri\Desktop\VS2019 P2\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\Microsoft.IntelliTrace.TelemetryObserver.CoreClr.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Reflection.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Reflection.Extensions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Connections.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Net.Primitives.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Hosting.Server.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.HostFiltering.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.HttpOverrides.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Routing.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.ObjectPool.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Routing.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.ObjectModel.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Authentication.Core.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Authentication.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Security.Claims.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Mvc.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Mvc.Core.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Mvc.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Mvc.ApiExplorer.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Authorization.Policy.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Authorization.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Mvc.Cors.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Cors.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Mvc.DataAnnotations.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Mvc.ViewFeatures.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Linq.Expressions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Components.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.JSInterop.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.DataProtection.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.DataProtection.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Cryptography.Internal.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Antiforgery.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.WebEncoders.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Text.Encodings.Web.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Mvc.Razor.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Caching.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Caching.Memory.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Mvc.TagHelpers.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Razor.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Reflection.Emit.Lightweight.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Extensions.Localization.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Console.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\System.Diagnostics.EventLog.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Collections.Specialized.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.ComponentModel.TypeConverter.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\Microsoft.Win32.Registry.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Resources.ResourceManager.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Text.RegularExpressions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Reflection.Emit.ILGeneration.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Reflection.Primitives.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Diagnostics.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.HttpsPolicy.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Users\dacuri\Source\Repos\RobotStudioPOC\CUCU\Server\bin\Debug\netcoreapp3.1\Microsoft.AspNetCore.Components.WebAssembly.Server.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.StaticFiles.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.Net.Http.Headers.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Drawing.Primitives.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Html.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Razor.Runtime.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Security.Principal.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.ComponentModel.Annotations.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Users\dacuri\Source\Repos\RobotStudioPOC\CUCU\Server\bin\Debug\netcoreapp3.1\CUCU.Shared.dll’. Symbols loaded.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Metadata.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Diagnostics.Abstractions.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Threading.ThreadPool.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\System.IO.Pipelines.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Security.Cryptography.X509Certificates.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Diagnostics.Debug.dll’.
    Microsoft.Hosting.Lifetime: Information: Application started. Press Ctrl+C to shut down.
    Microsoft.Hosting.Lifetime: Information: Hosting environment: Development
    Microsoft.Hosting.Lifetime: Information: Content root path: C:\Users\dacuri\Source\Repos\RobotStudioPOC\CUCU\Server
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\mscorlib.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Diagnostics.Process.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Collections.NonGeneric.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.WebUtilities.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Net.WebSockets.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.NETCore.App\3.1.2\System.Security.Principal.Windows.dll’.
    ‘iisexpress.exe’ (CoreCLR: clrhost): Loaded ‘C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\3.1.2\Microsoft.AspNetCore.Http.Extensions.dll’.
    The program ‘javascript debugger root session’ has exited with code -1 (0xffffffff).
    The program ‘[9472] iisexpress.exe: Program Trace’ has exited with code 0 (0x0).
    The program ‘localhost:44300’ has exited with code -1 (0xffffffff).
    The program ‘localhost:44300 #0 new starting [Service Worker]’ has exited with code -1 (0xffffffff).
    The program ‘[9472] iisexpress.exe’ has exited with code -1 (0xffffffff).

    Do you have any idea about what is wrong?

  • Avatar
    James Hancock

    Without lazy loading of at LEAST routes this can’t be used in Enterprise apps because every page you add makes your site load slower.

    And it is not being added until .net 5 in November.

    Making 3.2 a hello world release for the most part.

    Sad.

    • Avatar
      Darren Ford

      James, you can create your own router to do this. I did just this and can dynamically load modules including their routes. There are a couple blog posts out there on custom route topic. Oqtane has a custom router and Chris Sainty has a router specific post here: https://chrissainty.com/building-a-custom-router-for-blazor/. I do agree that to some degree most of the content around Blazor is Hello Worldy. There is still a a good bit left to be done and improve but it’s getting there.

      • Daniel Roth
        Daniel RothMicrosoft logo

        We do plan to look at adding support for lazy loading in .NET 5, but for most apps we expect that lazy loading won’t have much impact. For most scenarios, the amount of overhead for adding an additional page is small. It takes a surprising amount of app code for lazy loading to make a significant difference. This is in part because the format used for .NET assemblies, .NET IL, is a compact format that compresses pretty well.

        Take the default Blazor app for example. The transferred size of just the .NET assembly for the app, where all the app logic lives, is 6.8 KB. The total published size of the app is 2 MB with most of the size coming from the runtime and framework assemblies. Let’s say you decided to try to slim down the app size by lazy loading the FetchData page. Removing the FetchData component reduces the app assembly to 5.8 KB transferred – only 1 KB difference. There are some additional savings after linking to remove code that is no longer needed, but the total savings is still only about 18 KB. The total app size remains about 2 MB and lazy loading reduced the app size by less than 1%. What if you had 100 FetchData-like components? That adds about 40 KB. What about 1000? That adds about 350 KB.

        This isn’t to say that we don’t think there are scenarios where lazy loading will make a difference. We do think this is an important feature for certain apps, and we will look at addressing it in .NET 5 later this year. But for the many Blazor WebAssembly apps, lazy loading will most likely make very little difference.

  • Avatar
    Alex Whittle

    As recent releases are related to WebAssembly projects what is happening with Blazor Server Side? We’ve absolutely no interest in WebAssembly projects at the moment, should we be keeping up to date with these releases anyway? Assume auto-rebuild applies to SSB projects also?

    • Daniel Roth
      Daniel RothMicrosoft logo

      Hi Alex. Blazor Server shipped with .NET Core 3.1 LTS and auto-rebuild already works for Blazor Server apps with Visual Studio 16.4 or later. The next update for Blazor Server will come with .NET 5 later this year. If you’re building with Blazor Server and you have no plans to use Blazor WebAssembly then there’s no need keep up with the Blazor WebAssembly updates. The Blazor WebAssembly updates don’t impact Blazor Server apps at all. Blazor WebAssembly is being built on the same component model that shipped in .NET Core 3.1 with Blazor Server, so the same components work with either hosting model.

  • Avatar
    Stephen Brown

    Hi,

    This is great stuff. I have an issue running my project though, debugging won’t connect to the proxy, seems to be a timeout issue:

    System.TimeoutException: Failed to start the debug proxy within the timeout period of 10 seconds.
    at Microsoft.AspNetCore.Builder.DebugProxyLauncher.LaunchAndGetUrl(IServiceProvider serviceProvider)
    at Microsoft.AspNetCore.Builder.WebAssemblyNetDebugProxyAppBuilderExtensions.<>c.<b__0_1>d.MoveNext()
    — End of stack trace from previous location where exception was thrown —
    at Microsoft.AspNetCore.Builder.Extensions.MapMiddleware.Invoke(HttpContext context)
    at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
    Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request finished in 14.6847ms 500 text/plain
    Microsoft.AspNetCore.Hosting.Diagnostics: Information: Request starting HTTP/1.1 GET https://localhost:5001/_framework/debug/ws-proxy?browser=ws%3A%2F%2Flocalhost%3A51590%2Fdevtools%2Fbrowser%2F5990c061-f462-4f4e-ad68-4ce8606208ea
    Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware: Error: An unhandled exception has occurred while executing the request.

    Any ideas?

    Thanks

  • Avatar
    Darren Ford

    I found another issue related to the debugging via Visual Studio. For an application I am writing, it is using cookie authentication. The cookies are set by another primary application. Those cookies are domain specific. To be able to debug locally and use the external system for auth to set the cookies, I edited my ‘hosts’ file to map the address localhost.myrealdomainthatauths.com to localhost/127.0.0.1. This means that the applicationhost.config file has to be tweaked a bit to look like this:

    <bindings>
              <binding protocol="http" bindingInformation="*:53340:localhost.localdebugging.com" />
              <binding protocol="https" bindingInformation="*:44390:localhost.localdebugging.com" />
    </bindings>

    and my launchSettings.json looks like this:

    {
        "useWebAssemblyDebugging": true,
        "iisSettings": {
          "windowsAuthentication": false,
          "anonymousAuthentication": true,
          "iisExpress": {
            "applicationUrl": "http://localhost.localdebugging.com:53340",
            "sslPort": 44390
          }
        },
        "profiles": {
          "IIS Express": {
            "commandName": "IISExpress",
            "launchBrowser": true,
            "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
            "environmentVariables": {
              "ASPNETCORE_ENVIRONMENT": "Development"
            }
          },
          "BlazorDebugApp.Server": {
            "commandName": "Project",
            "launchBrowser": true,
            "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
            "applicationUrl": "https://localhost:5001;http://localhost:5000",
            "environmentVariables": {
              "ASPNETCORE_ENVIRONMENT": "Development"
            }
          }
        }
      }

    When using a sample app created directly from the template, debugging works. When I make these tweaks to have the sample app use a fully qualified domain mapped DNS-wise locally via hosts file, the app will run, but the debugger doesn’t load symbols and stop at breakpoints. Since my real app didn’t work and in fact crashes the debugger or fails to load symbols, I tried to isolate the issue by just testing the dns thing first using a sample app created directly from the new template.

    So here’s the order of my steps I took:

    Update visual studio to latest preview per instructions
    Update my real app to the new preview 3 lib versions per instructions
    Alter my launchsettings to contain the ‘inspectUri’ additions.
    Set breakpoint and fire up the application in the debugger.
    Chrome opens with app
    Debugger promptly crashes
    Create sample app directly from latest template
    Review the sample app launchSettings to see if it has the ‘inspectUri’ changes and it does.
    Fire up the sample app and set breakpoint which actually works….yay but puzzled why mine won’t work.
    Compare sample app launch settings to mine and discover there is an entry NOT mentioned in this post which is:

    "useWebAssemblyDebugging": true,

    Get excited because “that must be the issue” so add that to my launchSettings in my real app.
    Fire up my real app, same result, doesn’t work, debugger crashes.
    Try it again just for the heck of it, this time Visual Studio locks up so I manually kill it.
    Go into panic mode checking csproj files and making sure the versions I have match up…and they do.
    Now start isolating potential culprits starting with the hosts file and dns fiddling by only changing this one thing for the sample app.
    Now the sample app doesn’t work with just the applicationhost.config and launchSettings change from localhost to localhost.localdebugging.com so at a minimum this does indeed break it. Also, I must note that for some reason Visual Studio can not attach to the debugger using the fully qualified domain entry without running as Administrator(separate issue but annoying and I don’t know why admin is needed to run this way).

    So to reproduce this issue do the following:

    Create sample app using latest template(and host with .net core..don’t forget)
    Start the app and add breakpoint to make sure it works before next step.
    Edit your local ‘hosts’ file and add

    127.0.0.1 localhost.localdebugging.com

    Modify your applicationhost.config file so it looks like this (using the port numbers it already had set up for your sample app)

    <bindings>
              <binding protocol="http" bindingInformation="*:[your port number]:localhost.localdebugging.com" />
              <binding protocol="https" bindingInformation="*:[your other number]:localhost.localdebugging.com" />
    </bindings>

    Modify your launchSettings.json file and change the url to the fully qualified on you used in the hosts file

    "applicationUrl": "http://localhost.localdebugging.com:[your port number]",

    Now fire up the app and Chrome should open to the ssl version of the url.
    Should get error trying to attach to debugger…GRRR, now re-open Visual Studio as Administrator and fire up the debugger again.
    App should come up and work but debugger doesn’t load symbols and breakpoint doesn’t work.

    I also noticed a new file beside the applicationhost.config with the name debuggerConfiguration-[GUID].json which contains the non ssl port for the Chrome debugger.

    {"chromiumDebuggerPort":53350}

    All in all it doesn’t work quite yet for me and have seen several different behaviors occur when trying including:

    Debugger crashed killing the server side process leaving Chrome open
    Debugger staying alive along with Chrome and app fully functional, just no breakpoints loaded and working
    Debugger crashing and stopping immediately followed by Visual Studio hanging and ‘Not responding’

  • Avatar
    Rui Hou

    Hi! Thanks for all the work at improving Blazor WebAssembly!
    I wanted to try out my project with preview 3 on Azure App Service but it failed to build due to a linker error. It works well locally. Is that because of the SDK version on Azure? How may I change the SDK version to use for deployment? Or is it more likely that the .dll got removed during publish? I have added

    <BlazorWebAssemblyEnableLinking>true</BlazorWebAssemblyEnableLinking>

    in the client project.
    Thanks for bearing with me as I’m new to this…

    Command: oryx build /home/site/repository -o /home/site/wwwroot –platform dotnet –platform-version 3.1 -i /tmp/8d7d27f26d3daf0 –log-file /tmp/build-debug.log
    Build orchestrated by Microsoft Oryx, https://github.com/Microsoft/Oryx
    You can report issues at https://github.com/Microsoft/Oryx/issues

    Oryx Version : 0.2.20200114.13, Commit: 204922f30f8e8d41f5241b8c218425ef89106d1d, ReleaseTagName: 20200114.13
    Build Operation ID: |XqcchouI2n4=.1be129a3_
    Repository Commit : 4fe2e31c9019c4139986e25d850f58e42ea5d1e9

    Source directory : /tmp/8d7d27f26d3daf0
    Destination directory : /home/site/wwwroot

    Using .NET Core SDK Version: 3.1.100

    Restoring packages…
    Restore completed in 27.11 sec for /home/site/repository/Client/VisualGo.Client.csproj.
    Restore completed in 608.88 ms for /home/site/repository/Server/VisualGo.Server.csproj.
    Restore completed in 61.35 ms for /home/site/repository/Shared/VisualGo.Shared.csproj.
    Publishing output to ‘/home/site/wwwroot’
    Microsoft (R) Build Engine version 16.4.0+e901037fe for .NET Core
    Copyright (C) Microsoft Corporation. All rights reserved.

    Restore completed in 326.06 ms for /home/site/repository/Client/VisualGo.Client.csproj.
    Restore completed in 150.06 ms for /home/site/repository/Server/VisualGo.Server.csproj.
    Restore completed in 138.49 ms for /home/site/repository/Shared/VisualGo.Shared.csproj.
    VisualGo.Shared -> /home/site/repository/Shared/bin/Release/netstandard2.1/VisualGo.Shared.dll
    Fatal error in Mono IL Linker
    /var/nuget/microsoft.aspnetcore.components.webassembly.build/3.2.0-preview3.20168.3/targets/Blazor.MonoRuntime.targets(247,5): error : Unhandled exception. Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: ‘obj/Release/netstandard2.1/VisualGo.Client.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’ [/home/site/repository/Client/VisualGo.Client.csproj]
    —> Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: ‘obj/Release/netstandard2.1/VisualGo.Client.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null’
    at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)

    at Mono.Linker.Driver.Main(String[] args)
    /var/nuget/microsoft.aspnetcore.components.webassembly.build/3.2.0-preview3.20168.3/targets/Blazor.MonoRuntime.targets(247,5): error : ILLink failed with exit code 134. [/home/site/repository/Client/VisualGo.Client.csproj]

  • Avatar
    Orides Pavaneli

    Hi Daniel, i try to test the CallWebApi official sample, it’s not working for me.

    Sample: AspNetCore.Docs-master\aspnetcore\blazor\common\samples\3.x\BlazorWebAssemblySample
    System.Net.Http.Json (3.2.0-preview3.20175.8) package used to replace Microsoft.AspNetCore.Blazor.HttpClient package.
    The required WebApi is up and running, all intructions applied.

    Option: Call a Web Api (https://localhost:44365/CallWebApi)
    When clicked, shows the alert “An unhandled erros has ocorred. Reload”. The page is prepared for sending the request.
    If you dismiss the alert and click on the button “Request”, i got the following response:

    Response
    Status:
    RedirectMethod

    Using Google Chrome (version 80.0.3987.149 (Oficial Version) 64 bits)

    Body:
    TypeError: Failed to fetch
    at WebAssembly.Net.Http.HttpClient.WasmHttpMessageHandler.doFetch (System.Threading.Tasks.TaskCompletionSource1[TResult] tcs, System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) <0x2d7e5c0 + 0x00988> in <filename unknown>:0
    at WebAssembly.Net.Http.HttpClient.WasmHttpMessageHandler.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) <0x2d565d8 + 0x00184> in <filename unknown>:0
    at System.Net.Http.HttpClient.FinishSendAsyncBuffered (System.Threading.Tasks.Task
    1[TResult] sendTask, System.Net.Http.HttpRequestMessage request, System.Threading.CancellationTokenSource cts, System.Boolean disposeCts) in :0
    at BlazorSample.Components.HTTPRequestTester.DoRequest () [0x001db] in E:\Desenvolvimento\repos\Samples\BlazorWasm\BlazorWebAssemblySample\Components\HTTPRequestTester.razor:109

    Using Firefox (version 74.0 64bits)

    Body:
    TypeError: NetworkError when attempting to fetch resource.
    at WebAssembly.Net.Http.HttpClient.WasmHttpMessageHandler.doFetch (System.Threading.Tasks.TaskCompletionSource1[TResult] tcs, System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) <0x2cc78b0 + 0x00988> in <filename unknown>:0
    at WebAssembly.Net.Http.HttpClient.WasmHttpMessageHandler.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) <0x2ca1110 + 0x00184> in <filename unknown>:0
    at System.Net.Http.HttpClient.FinishSendAsyncBuffered (System.Threading.Tasks.Task
    1[TResult] sendTask, System.Net.Http.HttpRequestMessage request, System.Threading.CancellationTokenSource cts, System.Boolean disposeCts) in :0
    at BlazorSample.Components.HTTPRequestTester.DoRequest () in :0

    Using Microsoft Edge (version 44.18362.449.0)

    Body:
    TypeError: Falha ao buscar
    at WebAssembly.Net.Http.HttpClient.WasmHttpMessageHandler.doFetch (System.Threading.Tasks.TaskCompletionSource1[TResult] tcs, System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) <0x2cc78b0 + 0x00988> in <filename unknown>:0
    at WebAssembly.Net.Http.HttpClient.WasmHttpMessageHandler.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) <0x2ca1110 + 0x00184> in <filename unknown>:0
    at System.Net.Http.HttpClient.FinishSendAsyncBuffered (System.Threading.Tasks.Task
    1[TResult] sendTask, System.Net.Http.HttpRequestMessage request, System.Threading.CancellationTokenSource cts, System.Boolean disposeCts) in :0
    at BlazorSample.Components.HTTPRequestTester.DoRequest () in :0

    Using any browser:

    Headers:
    empty…

  • Avatar
    Emil Emilsson

    Im doing something like this

        [Inject]
        protected System.Net.Http.HttpClient Http { get; set; }
    
            List<TolfraediDTO> tolfraediKyn =
                await System.Net.Http.Json.HttpClientJsonExtensions
                .GetFromJsonAsync<List<TolfraediDTO>>(
                    Http, "/api/tolfraedi/GetAsync");
    

    after changing from the httpclient (which was working in the earlier version)

    I allways get this error when calling this.

    NotSupportedException: The provided ContentType is not supported; the supported types are ‘application/json’ and the structured syntax suffix ‘application/+json’.
    System.Net.Http.Json.HttpContentJsonExtensions.ValidateContent(HttpContent content)

    I added this to startup.cs

            // Server Side Blazor doesn't register HttpClient by default
            if (!services.Any(x => x.ServiceType == typeof(HttpClient)))
            {
                // Setup HttpClient for server side in a client side compatible fashion
                services.AddScoped<HttpClient>(s =>
                {
                    // Creating the URI helper needs to wait until the JS Runtime is initialized, so defer it.
                    var uriHelper = s.GetRequiredService<NavigationManager>();
                    HttpClient ret = new HttpClient
                    {
                        BaseAddress = new Uri(uriHelper.BaseUri)
                    };
                    return ret;
                });
            }
    

    any ideas ?

    Regards,
    Emil

  • Avatar
    Morten Meisler

    I can’t get debugging to work, it doesn’t break.

    Using 3.1.300-preview-015048, latest VS preview 16.6. Creating a new blazor webassembly app from template (checked launchsettings are updated)

    Does it have to be hosted? I think that’s unclear, and if that’s the case, will there be support for client-side blazor debugging?

    • Daniel Roth
      Daniel RothMicrosoft logo

      Hi Morten. Debugging should work for both standalone and ASP.NET Core hosted app. If you created the app using the latest version of the Blazor WebAssembly template then you shouldn’t need to update launchSettings.json – it should already be setup for debugging. Can you confirm that you are using the 3.2 Preview 3 version of the template?

  • Indudhar Gowda
    Indudhar Gowda

    Finally its give back time for Angular, they copied all best practices from WPF and Winforms implemented in Angular and Enjoyed for 6 Years.

    Now Blazor will implement all the best practices and features from Angular, Javascript, Jquery, NodeJS and Ensure they will never come back again.

    If they ever have to come back its the only way by New Innovation.

    I have said it in the past and say it again take the best out of all framework and Language which is thinner, Lighter and Faster and start implementing in Blazor,WPF and UWP. Most Importantly Open Source it.

  • Avatar
    Nick Whymark

    Yay, great work, thank you so much for the debugging! 🙂

    A couple of things that might be worth mentioning:

    I was upgrading an existing project which is Asp.Net core hosted and it may be worth pointing out you have to upgrade the launchsettings.json file in the Asp.Net core project. I was a little confused there for a few minutes….

    It works with Edge & Chrome but doesn’t work with Firefox. Also if you try it with Firefox it stops working for Edge and Chrome until I restart VS (might just be a solution reload, but I haven’t tried).

    You can’t seem to drill into List items when paused – I get “children cannot be evaluated”

      • Avatar
        Guillaume ZAHRA

        Hi Daniel,

        Thanks for you and Nick to poiting out that Firefox is not yet supported, i was wondering why nothing was working.

        There was another missing thing for me, even with Chrome nothing was working. I had to click on the little arrow of the debug button in VS2019 while i was in debug mode, and i clicked on “Script debugging” => “Enabled”. Maybe worth to mention.

        It was not checked by default on my machine, maybe because i disabled some things while working with UWP and VS2019 crashing together a looooong time ago because of the script debugging feature.

        So if nothing happen even with Chrome or Edge, time to check if script debugging is enabled in VS !

        • Daniel Roth
          Daniel RothMicrosoft logo

          There was another missing thing for me, even with Chrome nothing was working. I had to click on the little arrow of the debug button in VS2019 while i was in debug mode, and i clicked on “Script debugging” => “Enabled”. Maybe worth to mention.

          Thanks for bringing this to our attention, Guillaume! Blazor WebAssembly debugging is based on the script debugging infrastructure. I’ll follow up to make sure this is well documented.

  • Carlos Villegas
    Carlos Villegas

    Hello there,

    After upgrading my Blazor WASM preview 2 application to preview 3 the only thing from this post that’s not working is the Auto-rebuild feature. I’m using Visual Studio 2019 16.6 Preview 2 and debugging using the .NET Core runtime instead of IIS Express. My solution has 3 projects, the client, server and the shared library, but VS won’t auto-rebuild, not matter what file I change.

    Do I need to turn something else on?

    Thanks.

  • Avatar
    Paul Trotter

    I have an interesting issue that started after upgrading to 3.2.0 preview 2, and still exists in preview 3.

    This issue did not happen in preview 1.

    My project will compile and run in Debug mode, but when I do a publish to a folder using the “Release” configuration, it fails with this error:

    1>------ Build started: Project: Marquis.SightGlass.WebAssembly, Configuration: Release Any CPU ------
    1>Fatal error in Mono IL Linker
    1>C:\Users\PaulT\.nuget\packages\microsoft.aspnetcore.components.webassembly.build\3.2.0-preview3.20168.3\targets\Blazor.MonoRuntime.targets(247,5): error : Unhandled exception. Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'SQLitePCLRaw.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1488e028ca7ab535'
    1> ---> Mono.Cecil.AssemblyResolutionException: Failed to resolve assembly: 'SQLitePCLRaw.core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1488e028ca7ab535'
    1>   at Mono.Cecil.BaseAssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)
    1>   at Mono.Linker.AssemblyResolver.Resolve(AssemblyNameReference name, ReaderParameters parameters)
    1>   at Mono.Linker.LinkContext.Resolve(IMetadataScope scope)
    1>   at Mono.Linker.LinkContext.Resolve(IMetadataScope scope)
    1>   at Mono.Linker.LinkContext.ResolveReferences(AssemblyDefinition assembly)
    1>   at Mono.Linker.Steps.LoadReferencesStep.ProcessReferences(AssemblyDefinition assembly)
    1>   at Mono.Linker.Steps.LoadReferencesStep.ProcessAssembly(AssemblyDefinition assembly)
    1>   at Mono.Linker.Steps.BaseStep.Process(LinkContext context)
    1>   at Mono.Linker.Pipeline.ProcessStep(LinkContext context, IStep step)
    1>   at Mono.Linker.Pipeline.Process(LinkContext context)
    1>   at Mono.Linker.Driver.Run(ILogger customLogger)
    1>   at Mono.Linker.Driver.Execute(String[] args, ILogger customLogger)
    1>   at Mono.Linker.Driver.Main(String[] args)
    1>C:\Users\PaulT\.nuget\packages\microsoft.aspnetcore.components.webassembly.build\3.2.0-preview3.20168.3\targets\Blazor.MonoRuntime.targets(247,5): error : ILLink failed with exit code -532462766.
    1>Done building project "Marquis.SightGlass.WebAssembly.csproj" -- FAILED.
    2>------ Skipped Publish: Project Marquis.SightGlass.WebAssembly, Configuration: Release Any CPU ------
    2> 
    ========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========
    ========== Publish: 0 succeeded, 0 failed, 1 skipped ==========
    
  • Thys Nel
    Thys Nel

    Can you please add some information about selecting the appropriate Blazor WebAssembly configuration in different hosting environments. It is all fine to be able to have different app settings files for different configurations but in order to actually select the appropriate configuration it seems you need to set the “Blazor-Environment” response header to the required environment. I could not find any reference to this in the release notes or documentation and had to inspect the js to find this. Please document this in more detail, specifically if there is a way to actually set this in a publish profile for the case where IIS is used.

      • Daniel Roth
        Daniel RothMicrosoft logo

        Hi Thys, Matt. Thanks for the feedback! When your app is hosted in an ASP.NET Core app, Blazor adds a middleware that sets the Blazor-Environment header for you so that the app picks up the environment set on the server. The environment on the server is set using the ASPNETCORE_ENVIRONMENT environment variable (see https://docs.microsoft.com/aspnet/core/fundamentals/environments). For standalone Blazor WebAssembly apps, the dev server will add the header to specify the Development environment. For other hosting environments you’ll need to add the header yourself. I’ve opened https://github.com/dotnet/AspNetCore.Docs/issues/17567 to track getting this documented.

        • Thys Nel
          Thys Nel

          Thanks for the feedback. Our use case is as follows: Standalone WebAssembly app, published to iis. When we publish to IIS (using webdeploy) it generates a web config with all the rewrite rules etc. What we would like to do is use different publish profiles to set the correct environment. This can be done by setting the Blazor-Environment response header in the web config. However, we can’t get it to work:
          – Web config transforms do not seem to get processed with WebAssembly, so using that does not work; and
          – If we use different a specific provided web config with the correct header this gets overridden with the auto generated one.

          For hosting in other environments (we use nginx as well) it is not an issue because there we do the config once per environment and it keeps working since the publish process does not generate / override the website config.

          Either of the following will fix the issue:
          – Have an option to not deploy the web config (and manually configure it per site on the server). This is problematic since we normally deploy with “delete files on server not in source” option
          – Have an option to apply a web config transform to the generated web config (preferable)
          – Have an option to provide complete web config from project source without using the auto generated web config

  • Avatar
    dionisio luis

    Good Evening from Portugal.
    After I updated my project to this last version, i’m having this issue :
    blazor.webassembly.js:1 Uncaught SyntaxError: Invalid or unexpected token

    When I create new projects I dont have this issue.
    I’ve already changed a lot on my code and compared with a project that is working…
    Did any1 have this issue and have solved ?

    The application is a Client Side, Asp.net Core Hosted

    Thanks.

    • Avatar
      Morgan Roff

      Dionisio, did you make any progress here? I just had this issue when I updated to 3.2.0 from 3.2.0-preview3.20168.3. I’m planning to file an issue once I can track this down a bit more, but currently everything works fine when I run locally from visual studio, but I hit this issue when I’m running from a docker image.

      Locally, I can see in dev tools that blazor.webassembly.js loads as valid javascript (eg.

      !function(e) {
          var t = {};
          function n(r) {
              if (t[r])
              ...

      ). However the docker image is serving garbage data. Looks like this:

      R�H�zZª�����'M��  �bj.�

      Could it be still gzipped maybe? The response headers have changed too. These headers have gone missing when I updated:

      content-encoding: gzip
      vary: Accept-Encoding
  • Avatar
    Lochy

    Hi,

    When trying to debug on a client project, I get stuck here.
    Not sure if I’m missing something, but it seems to detect there’s a breakpoint but can’t find it?

    // Unable to find document file:///...\Client\Pages\FetchData.razor
      • Avatar
        Lochy

        Hi Daniel,

        This is in Visual Studio 2019/preview.
        What seems to happen is if I step through a few times, it takes me to the server side code, but gives me that error for any client side stuff.
        I also haven’t gotten the autobuild to work via preview either, but I’m not hugely bothered by that at the moment.
        I also had 3 GSOD for http.sys the other day after pressing the debug button.

        Let me know what information I can provide that would help.

        • Daniel Roth
          Daniel RothMicrosoft logo

          Hi Lochy. For your debugging issues, it would be best if you could open an issue with more details about your setup, like your specific VS version, the build configuration, what your project looks like, etc. For Blazor WebAssembly debugging issues I recommend opening the issue in the https://github.com/mono/mono/issues repo.

          Autorebuild only works in a fairly constrained scenario currently. You need to run without debugging (Ctrl-F5, not F5), and you need to run on IIS. Also, standalone Blazor WebAssembly projects are not supported – Blazor WebAssembly projects need to be ASP.NET Core hosted for the feature to work.

  • Avatar
    David Bowser

    Has something changed with two-way binding recently?
    I have a page that contains a dozen or so components. I had two way binding working powerfully so that when a user selected one row in one component that was getting reflected back to the main component and back out to the sub component with the detail. This is repeated for quite a few levels of drill down with some branching logic and all. Now I decided to upgrade to the latest and all of my bindings in my containing page have errors and nothing I try is working
    In the main page I have something like:

    <Table2C @bind-SelectedTable2RowObject=”SelectedTable2RowObject” @bind-SelectedTable3RowObject=”SelectedTable3RowObject” />

    @code{
    private Table2Row SelectedTable2RowObject;
    private Table3Row SelectedTable3RowObject;

    In the Table2C.razor file for the above component I have

    @code{
    [Parameter]
    public Table2Row SelectedTable2RowObject …

    [Parameter]
    public Table3Row SelectedTable3RowObject …

    That all worked great before but now I get the red squiggly under each local variable listed between quotes such as “SelectedTable2RowObject”.
    It says: ‘The attribute names could not be inferred from bind attribute ‘SelectedTable2RowObject’.
    I have tried many variations but nothing seems to work.

    Further, my one way bindings of the form ‘ ParamterName=”Value” ‘also fail with an error:
    Found markup element with unexpected name ‘ComponentName’. If this is intended to be a component, add a using directive for its namespace.
    I don’t know what the namespace would be since the component is just a .razor file with no explicit namespace or class definitions.

    In general things seem to be getting a bit confusing. When I tried to look up documentation on bindings in case there is some new form documented I see all kinds of different approaches, some for example with snippits showing a class deriving from BlazorComponent, some with .cshtml files, but nothing clearly stating that I now need to somehow derive a class from some standard base class, or if the file extensions should be changed or how all of this should work or when to do different approaches. I built a powerful app and have continued to move it forward through quite a few change cycles on this amazing technology but now things seem to be getting more confusing instead of more clear.

    Can you please give some direction for my specific issue and update the documentation to clarify high level issues such as what file extension we should use for pages and components as well as details such as the various ways to pass parameters to components and what we should use when with examples. I realize things are still changing but I thought it was supposed to be getting more stable soon.

    Thanks so much !!!

    • Daniel Roth
      Daniel RothMicrosoft logo

      Hi David. To help me better understand what the current state of your code base is, which version of Blazor are you upgrading from?

      You’re binding code looks correct to me. Do you see the same errors if you build from the command-line? Can you confirm your component parameters have public getters and setters?

      Components do have a namespace, which is derived from the path to the .razor file, or it can be specified explicitly using the @namespace directive. When you define a component in a .razor file, it gets compiled into a normal C# class. To use a component, its namespace needs to be in scope, just like it would in C#. You can either fully qualify the component name in the tag (<Namespace.ComponentName>) or you can add an @using directive for the namespace.

      If you’re still having a lot of issues it will probably be easier to get help by opening a GitHub issue with more details about your project as this commenting system is a bit limited.

      • Avatar
        David Bowser

        Hello Daniel,

        Thank you for your help!
        I finally figured out my issue!
        I needed to add a @using with the path of the component folder and then everything cleared up.

        Thank you so much!!! So glad this binding approach still works. It is really powerful.

        It still would be really helpful to have some more documentation about all this and what to use when. I know you have lots of requests to add new functionality but documentation, recommended approaches, and examples are really important for those just getting started. These are strengths of .NET and why I and probably others prefer programming in C# vs JavaScript. 🙂

  • Avatar
    haroon siddiqi

    Hi Daniel,

    Need a helping hand as I am getting back to hands on dev after a while.

    I created a VM on Azure with VS2019 Community Edition (16.5.2) to try creating a static website on azure with blazor SPA. I tried getting started tutorial but could not find blazor web assembly template. I then found out that it is only available in preview so I installed VS2019 16.6.0 preview 2.1. Here is detail of what is already installed from about box:
    Microsoft Visual Studio Community 2019 Preview
    Version 16.6.0 Preview 2.1
    VisualStudio.16.Preview/16.6.0-pre.2.1+30001.183
    Microsoft .NET Framework
    Version 4.7.03190
    ASP.NET and Web Tools 2019 16.6.741.31162
    ASP.NET and Web Tools 2019
    ASP.NET Core Razor Language Services 16.1.0.2016803+11ed2a5ba094b51dbf240b074e708f314fdaba89
    Provides languages services for ASP.NET Core Razor.
    ASP.NET Web Frameworks and Tools 2019 16.6.741.31162
    For additional information, visit https://www.asp.net/

    Blazor web assembly template is still not available. any help to get me started would be much appreciated.

    Hope to hear from you soon.
    BR
    Haroon

  • Avatar
    Osman Taskiran

    Hi Daniel,

    Thank you for preview 3.

    I am trying to publish Blazor WebAssembly Hosted with Individual Authentication.
    I dont have any change on template.

    This template works on developer machine and Azure Windows AppService well.
    Also this template works on Azure Linux App Service, but it can not validate token on linux app service.
    I can not browse fetchdata api. It returns 401 error.

    I have look at your pizza app, but the authentication and authorization mechanism a little bit diffrent than latest template.
    I am searching a sample project about identity server and blazor webassembly hosted with individual authentication. But I can not find any sample.

    Could you please provide a sample project that runs on a production environment on linux app service.
    There are some complicated subject. Azure Key Vault, certificates, keys, Identity Server (also external providers) etc. This may be help to everbody.

    Thanks

    • Daniel Roth
      Daniel RothMicrosoft logo

      Hi Shahid. Blazor WebAssembly apps run on a WebAssembly based .NET runtime that runs fine on all modern browsers regardless of platform including mobile and desktop platforms. So your Blazor WebAssembly app should run fine on Android. The runtime used by Blazor WebAssembly is separate from the .NET Core runtime, so that’s why you don’t see Android listed for .NET Core. We understand it can be confusing to keep track of all the various .NET implementations, so for .NET 5 were doing work to combine .NET Core and the Mono based runtime used for Xamarin apps into a more unified platform: https://devblogs.microsoft.com/dotnet/introducing-net-5/.

  • thomas ebner
    thomas ebner

    Hi, I think the AAD integration (RemoteAuthenticatorView) is not working correctly.
    If I want to run my app with a specific pathbase (example: dotnet run –pathbase=/myapp) and then i am redirected to the AAD login following exception occurs in my web browser console:

    System.InvalidOperationException: Invalid return url. The return url needs to have the same origin as the current page.

    The returnUrl in the URL is set correctly.