hi
You can use the dotnet build /graphbuild command to build your main app. It will also build the module.
https://dev.to/enisn/what-is-graphbuild-in-net-cli-msbuild-1h2e
When you publish your app to Docker, you can also use graphbuild to build your main app.
It will works in Docker.
Thanks.
居然呀47分钟才能生成完成。
每次都可以复现吗? 有详细的步骤吗?
你应该可以使用最新的Studio和老版本的suite
hi
Try to add this class to your FirstService and watch the error logs
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using Volo.Abp;
using Volo.Abp.Caching;
using Volo.Abp.DependencyInjection;
using Volo.Abp.IdentityModel;
using Volo.Abp.MultiTenancy;
using Volo.Abp.Threading;
namespace MyCompanyName.MyProjectName.Web;
[Dependency(ReplaceServices = true)]
[ExposeServices(typeof(IIdentityModelAuthenticationService), typeof(IIdentityModelAuthenticationService))]
public class MyIdentityModelAuthenticationService : IdentityModelAuthenticationService
{
private readonly IHttpContextAccessor _httpContextAccessor;
public MyIdentityModelAuthenticationService(IOptions<AbpIdentityClientOptions> options,
ICancellationTokenProvider cancellationTokenProvider, IHttpClientFactory httpClientFactory,
ICurrentTenant currentTenant,
IOptions<IdentityModelHttpRequestMessageOptions> identityModelHttpRequestMessageOptions,
IDistributedCache<IdentityModelTokenCacheItem> tokenCache,
IDistributedCache<IdentityModelDiscoveryDocumentCacheItem> discoveryDocumentCache,
IAbpHostEnvironment abpHostEnvironment, IHttpContextAccessor httpContextAccessor) : base(options, cancellationTokenProvider, httpClientFactory,
currentTenant, identityModelHttpRequestMessageOptions, tokenCache, discoveryDocumentCache, abpHostEnvironment)
{
_httpContextAccessor = httpContextAccessor;
}
protected override async Task<string?> GetAccessTokenOrNullAsync(string? identityClientName)
{
if (_httpContextAccessor.HttpContext != null)
{
var bearerTokenHeader = _httpContextAccessor.HttpContext.Request.Headers["Authorization"].ToString();
if (!string.IsNullOrEmpty(bearerTokenHeader) &&
bearerTokenHeader.StartsWith("Bearer ", System.StringComparison.OrdinalIgnoreCase))
{
var token = bearerTokenHeader.Substring("Bearer ".Length);
Logger.LogError("BearerTokenHeader is: {BearerTokenHeader}", bearerTokenHeader);
Logger.LogError("Getting access token from HTTP context: {Token}", token);
return token;
}
else
{
Logger.LogError("Authorization header is missing or does not start with 'Bearer '.");
}
}
else
{
Logger.LogError("HttpContext is null, cannot retrieve access token from headers.");
}
return await base.GetAccessTokenOrNullAsync(identityClientName);
}
}
hi
But when I want deploy what is abp's approach for the modules. Should I pack it and put it on Nuget?
You can reference your module project through the source code or NuGet package.
For source code reference, no need to publish the packages in NuGet.
Thanks.
Great
hi
Do you have IdentityClients in your FirstService's appsettings.json file?
In microservices, integration services do not require authentication between them. Therefore, the SecondService's CurrentUser should not have any claims.
eg:
{
"IdentityClients": {
"Default": {
"GrantType": "password",
"ClientId": "Test_App",
"ClientSecret": "1q2w3e*",
"UserName": "host_default_admin",
"UserPassword": "1q2w3E*",
"Authority": "https://localhost:44395",
"Scope": "Test_Scope"
}
}
}
hi
Can you share full logs.txt? liming.ma@volosoft.com
Thanks.
你之前的suite版本是多少?
可以试试降级到9.2.2 或 9.2.1
你可以换一台电脑或者重启试试吗?