I can, and have, done that.
However, that just cleans my local folders. There is no problem with my local build. That's building correctly.
It's only when I check the code in to source control, and then the remote VS Build Agent on the build server attempts to build it, that the problem arises. And only since I've upgraded.
Each time the build server kicks off a build, the first thing it does is completely scrub the build target folders, so that it's starting afresh. So there's no bin/obj folders, or anything else for that matter ... it starts with an empty folder, pulls down all the source code, then performs a build. So it's "fresh" each time.
Could this maybe have something to do with the fact I downloaded the LeptonX source code at one point? I was going to try to customise something, but then abandoned the idea. I deleted the downloaded folder ... but is it possible it may have corrupted something else?
Hi Team,
I've recently upgraded my solution from 5.2 to 7.0.3.
I've checked the code into source control, and my remote VS Build Agent is attempting to build.
It keeps crashing out, with a couple of hundred errors. It appears to be failing on file copies ... the sample below shows a failure, then 3 successes, then another failure:
C:\agent\TestVx\_work\_tool\dotnet\sdk\7.0.202\Sdks\Microsoft.NET.Sdk.Razor\targets\Microsoft.NET.Sdk.Razor.StaticWebAssets.targets(593,5): warning MSB3026: Could not copy "C:\Windows\ServiceProfiles\NetworkService\.nuget\packages\volo.abp.aspnetcore.components.web.leptonxtheme\2.0.5\staticwebassets\side-menu\libs\bootstrap-datepicker\css\bootstrap-datepicker.standalone.css" to "C:\agent\TestVx\_work\2\s\GUI\BlazorServer\src\TestCompany.TestApplication.BlazorServer.Blazor\obj\Debug\net7.0\PubTmp\Out\wwwroot\_content\Volo.Abp.AspNetCore.Components.Web.LeptonXTheme\side-menu\libs\bootstrap-datepicker\css\bootstrap-datepicker.standalone.css". Beginning retry 2 in 1000ms. Could not find a part of the path 'C:\agent\TestVx\_work\2\s\GUI\BlazorServer\src\TestCompany.TestApplication.BlazorServer.Blazor\obj\Debug\net7.0\PubTmp\Out\wwwroot\_content\Volo.Abp.AspNetCore.Components.Web.LeptonXTheme\side-menu\libs\bootstrap-datepicker\css\bootstrap-datepicker.standalone.css'. [C:\agent\TestVx\_work\2\s\GUI\BlazorServer\src\TestCompany.TestApplication.BlazorServer.Blazor\TestCompany.TestApplication.BlazorServer.Blazor.csproj]
Copying file from "C:\Windows\ServiceProfiles\NetworkService\.nuget\packages\volo.abp.aspnetcore.components.web.leptonxtheme\2.0.5\staticwebassets\side-menu\libs\bootstrap-datepicker\css\bootstrap-datepicker3.standalone.css" to "C:\agent\TestVx\_work\2\s\GUI\BlazorServer\src\TestCompany.TestApplication.BlazorServer.Blazor\obj\Debug\net7.0\PubTmp\Out\wwwroot\_content\Volo.Abp.AspNetCore.Components.Web.LeptonXTheme\side-menu\libs\bootstrap-datepicker\css\bootstrap-datepicker3.standalone.css".
Copying file from "C:\Windows\ServiceProfiles\NetworkService\.nuget\packages\volo.abp.aspnetcore.components.web.leptonxtheme\2.0.5\staticwebassets\side-menu\libs\bootstrap-datepicker\css\bootstrap-datepicker.standalone.min.css" to "C:\agent\TestVx\_work\2\s\GUI\BlazorServer\src\TestCompany.TestApplication.BlazorServer.Blazor\obj\Debug\net7.0\PubTmp\Out\wwwroot\_content\Volo.Abp.AspNetCore.Components.Web.LeptonXTheme\side-menu\libs\bootstrap-datepicker\css\bootstrap-datepicker.standalone.min.css".
Copying file from "C:\Windows\ServiceProfiles\NetworkService\.nuget\packages\volo.abp.aspnetcore.components.web.leptonxtheme\2.0.5\staticwebassets\side-menu\libs\bootstrap-datepicker\css\bootstrap-datepicker.standalone.css.map" to "C:\agent\TestVx\_work\2\s\GUI\BlazorServer\src\TestCompany.TestApplication.BlazorServer.Blazor\obj\Debug\net7.0\PubTmp\Out\wwwroot\_content\Volo.Abp.AspNetCore.Components.Web.LeptonXTheme\side-menu\libs\bootstrap-datepicker\css\bootstrap-datepicker.standalone.css.map".
##[warning]C:\agent\TestVx\_work\_tool\dotnet\sdk\7.0.202\Sdks\Microsoft.NET.Sdk.Razor\targets\Microsoft.NET.Sdk.Razor.StaticWebAssets.targets(593,5): Warning MSB3026: Could not copy "C:\Windows\ServiceProfiles\NetworkService\.nuget\packages\volo.abp.aspnetcore.components.web.leptonxtheme\2.0.5\staticwebassets\side-menu\libs\bootstrap-datepicker\css\bootstrap-datepicker.standalone.min.css" to "C:\agent\TestVx\_work\2\s\GUI\BlazorServer\src\TestCompany.TestApplication.BlazorServer.Blazor\obj\Debug\net7.0\PubTmp\Out\wwwroot\_content\Volo.Abp.AspNetCore.Components.Web.LeptonXTheme\side-menu\libs\bootstrap-datepicker\css\bootstrap-datepicker.standalone.min.css". Beginning retry 2 in 1000ms. Could not find a part of the path 'C:\agent\TestVx\_work\2\s\GUI\BlazorServer\src\TestCompany.TestApplication.BlazorServer.Blazor\obj\Debug\net7.0\PubTmp\Out\wwwroot\_content\Volo.Abp.AspNetCore.Components.Web.LeptonXTheme\side-menu\libs\bootstrap-datepicker\css\bootstrap-datepicker.standalone.min.css'.
The filename changes each time, but the error is the same: can't copy it, can't find part of a path, and with eventual "exceeded retry count". A quick scan seems to indicate that they're all related to leptonxtheme.
I've tried rebooting the build server, in case there are file locks etc ... but that hasn't helped.
Any idea what might be causing this, and how I might fix it?
Thanks!
T
PERFECT!
Not only is this exactly what I needed to achieve, your explanation and code samples are some of the best explanations I've seen so far. Nothing assumed, nothing left out.
Might be worth adding this sample to your official documentation?
Thanks!
T
I have a ToolbarItem that has a text string bound to an extension method attached to my CurrentUser. It only updates if I specifically call StateHasChanged from within the component itself, eg. by adding a click event:
@inject ICurrentUser _currentUser; <div class="btn"> <i class="far fa-chart-pie" @onclick="ShowNotifications">@_currentUser.CurrentDivision()</i> </div> @code { private async Task ShowNotifications() { await Message.Info("TODO: Switch Divisions"); StateHasChanged(); }
Changing the value of CurrentDivision outside of the component doesn't trigger a refresh.
There is only one point in the application where this value changes, when a user selects a value from a dropdown list. I tried getting a reference to the component, with the view that I would add a "Refresh" method to it that would call StateHasChanged ... but I can't cast the object:
var toolbar = _toolbarManager.GetAsync("Main"); var item = toolbar.Result.Items[0]; ToolbarNotificationDivision notification = item as ToolbarNotificationDivision; // this won't compile
Is there another way I can force a StateHasChanged on the main toolbar component? Or, preferably, call a custom method (eg. "Refresh") on a toolbar component?
Thanks!
T
Great, thanks.
Read a little further down, and someone had corrected the registration code so that it used "AbpIdentityOptions", rather than "AbpIdentityAspNetCoreOptions":
Configure<AbpIdentityOptions>(options => { options.ExternalLoginProviders.Add<FakeExternalLoginProvider>(FakeExternalLoginProvider.Name); });
Actually got it working in the Blazor app ... I'm building for server-side Blazor, not WASM. That said, yes, it probably needs implementing in the API project as well.
That's half the problem solved ... now to tackle the Claims component ... :-)
Okay, partway there with this. I'm just stuck on where to put this code:
Configure<AbpIdentityAspNetCoreOptions>(options => { options.ExternalLoginProviders.Add<FakeExternalLoginProvider>(FakeExternalLoginProvider.Name); });
I'm on current build, Blazor, minimal .NET 6.
I thought it might have to go into the module class, in the "ConfigureExternalProviders" method ... but I can't seem to get the syntax correct.
Can you please assist?
Indeed, that could be the core of the solution! I will try it in the next day or so, and see if it meets the requirements.
I'm not sure how/where I could create new user Claims in this scenario, though.
Is that something that would happen in GetUserInfoAsync?
I've previously used ASP.NET Zero, where I could modify the authentication code so that the username / password combination was passed to my own external service, which would then authenticate the user against a standalone database used for a separate application.
When the response was returned, ASP.NET Zero was automatically creating the user in it's own database as well.
Is there a way to achieve something similar in ABP.io? Basically, I need to take the username / password that the user enters, and pass those, along with a custom key stored against the tenant, to an external service. That service will return a boolean indicating whether the username / password was a valid combination, along with a key/value list that will need to be stored against the ICurrentUser ... I'm guessing as Claims?
Any help / examples would be appreciated!
T
Ah, excellent. I was wondering if there was a way to do this.
I ended up running "netstat -aon" to get a list of everything using ports on my machine.
I found an entry that was using Port 3000, and made a note of it's PID.
Using Task Manager, I added the PID column, and found and instance of "Node.js" (server-side Node) using the port in question.
Turns out this was running in the background as part of an application called "Logi Analytics".
I terminated the services related to that application, and was able to get ABP Suite up and running without the Kestrel error.
I'll leave this note here, in case it helps someone else out in the future.
Thanks so much for your help! Although now it looks like I'm going to have a busy weekend :-)
T
Beautiful. CLI appears to be working now:
C:\LeptonTheme>abp get-source Volo.LeptonTheme [16:51:12 INF] ABP CLI (https://abp.io) [16:51:13 INF] Version 4.4.3 (Stable) [16:51:16 INF] Output folder: C:\LeptonTheme [16:51:16 INF] Downloading source code of Volo.LeptonTheme [16:51:16 INF] Version: [16:51:16 INF] Output folder: C:\LeptonTheme [16:51:19 INF] Using cached module: Volo.LeptonTheme, version: 4.4.3 [16:51:22 INF] Check out the documents at https://docs.abp.io/en/commercial/latest/themes/lepton [16:51:28 INF] 'Volo.LeptonTheme' has been successfully downloaded to 'C:\LeptonTheme'
C:\LeptonTheme>
Still no luck kicking up ABP Suite though:
C:\LeptonTheme>abp suite [16:51:56 INF] ABP CLI (https://abp.io) [16:51:56 INF] Version 4.4.3 (Stable) Starting Suite v4.4.3 ... [16:52:03 FTL] Unable to start Kestrel. System.IO.IOException: Failed to bind to address http://localhost:3000. ---> System.AggregateException: One or more errors occurred. (An attempt was made to access a socket in a way forbidden by its access permissions.) (An attempt was made to access a socket in a way forbidden by its access permissions.) ---> System.Net.Sockets.SocketException (10013): An attempt was made to access a socket in a way forbidden by its access permissions. at System.Net.Sockets.Socket.UpdateStatusAfterSocketErrorAndThrowException(SocketError error, String callerName) at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress) at System.Net.Sockets.Socket.Bind(EndPoint localEP)
That looks to be something my end (I'm guessing) with the "Unable to start Kestrel". Any ideas on what could be causing that?
I would prefer to use the Suite rather than the CLI moving forward, if possible, so getting this working would be advantageous...
Thanks!
T