Understand it builds on your side. Noticed IDE right-click on web csproj publish to folder gives me this error:
16:41:25:514 C:\Program Files\dotnet\sdk\9.0.304\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.ConflictResolution.targets(112,5): Error NETSDK1152: Found multiple publish output files with the same relative path: D:\Playware\Projects\SkinGoPrime2\source-final\Ldr.Prime.Main\modules\lms\src\Ldr.Prime.Lms.Web\Pages\_ViewImports.cshtml, D:\Playware\Projects\SkinGoPrime2\source-final\Ldr.Prime.Main\modules\common\src\Ldr.Prime.Common.Web\Pages\_ViewImports.cshtml.
16:41:25:527
Command line publish works fine with this command:
dotnet publish "Ldr.Prime.Main.Web.csproj" --configuration Release --output "D:\..\..\...\Testing\IIS-Server-Folder-Serving-WebApp" --no-restore --self-contained false
Local m/c level VS2022 F5 to start the web app works perfect.
The problem was on the server IIS-hosted web app:.
Looking into Azure DevOps script, we were checking the build error by building all sub modules first and finally the Main solution that had the web start-up project. When all builds are successful, for publishing, we took pre-built artifacts from bin/ and published with --no-build option which somehow created all embedded & content conflicts, hence when we removed -- no-build and left the publish to properly build and publish together in one-go, problem is solved now:
# Publish main web application only (avoiding module conflicts)
- task: DotNetCoreCLI@2
displayName: 'Final Build cum Publish Main Web Application for Deployment'
inputs:
command: 'publish'
projects: 'src/Ldr.Prime.Main.Web/Ldr.Prime.Main.Web.csproj'
arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/publish --no-restore --self-contained false'
zipAfterPublish: true
modifyOutputPath: false
Now all good.
What's baffling me is IDE publish of web project has issues and when done via command line no issues?
full source code links to download has been emailed. pls look into it
but still getting 404, irrespective - any idea where it's failing, do u need full access to code and devOps script? Is there a way to check the routing?
[nachi] said:
Build failed in devOps pipeline, but now publish fails because multiple modules have Pages/_ViewImports.cshtml and they're conflicting during publish.
hence tried this variation:
<ItemGroup> <!-- Embed static assets --> <EmbeddedResource Include="Pages\**\*.css" /> <EmbeddedResource Include="Pages\**\*.js" /> <EmbeddedResource Include="Components\**\*.js" /> <EmbeddedResource Include="Components\**\*.css" /> <EmbeddedResource Include="wwwroot\**\*.*" /> <EmbeddedResource Include="Pages\**\*.cshtml" /> <!-- Explicitly mark for Razor compilation --> <RazorGenerate Include="Pages\**\*.cshtml" /> <Content Remove="Pages\**\*.css" /> <Content Remove="Pages\**\*.js" /> <Content Remove="Components\**\*.js" /> <Content Remove="Components\**\*.css" /> <Content Remove="wwwroot\**\*.*" /> </ItemGroup>build succeeds and verified the Compiled Razor Views Are in the DLL with
findstr /s /i "AspNetCore" Ldr.Prime.Lms.Web.dllNo compiled Razor view classes! I DON'T see any types like:
AspNetCoreGeneratedDocument.Pages_Lms_Index Pages_Lms_Index _Views_Pages_Lms_Indexstill kind of stuck
Build failed in devOps pipeline, but now publish fails because multiple modules have Pages/_ViewImports.cshtml and they're conflicting during publish.
hence tried this variation:
<ItemGroup>
<!-- Embed static assets -->
<EmbeddedResource Include="Pages\**\*.css" />
<EmbeddedResource Include="Pages\**\*.js" />
<EmbeddedResource Include="Components\**\*.js" />
<EmbeddedResource Include="Components\**\*.css" />
<EmbeddedResource Include="wwwroot\**\*.*" />
<EmbeddedResource Include="Pages\**\*.cshtml" />
<!-- Explicitly mark for Razor compilation -->
<RazorGenerate Include="Pages\**\*.cshtml" />
<Content Remove="Pages\**\*.css" />
<Content Remove="Pages\**\*.js" />
<Content Remove="Components\**\*.js" />
<Content Remove="Components\**\*.css" />
<Content Remove="wwwroot\**\*.*" />
</ItemGroup>
build succeeds and verified the Compiled Razor Views Are in the DLL with findstr /s /i "AspNetCore" Ldr.Prime.Lms.Web.dll
No compiled Razor view classes! I DON'T see any types like: AspNetCoreGeneratedDocument.Pages_Lms_Index Pages_Lms_Index _Views_Pages_Lms_Index
still kind of stuck
I've tried the AI-Bot suggested tips to no avail. Have shared the code download link via email.
I'm using modular monolith layered app architecture to combine Main with few modules. Modules have razor CSHTML pages which works locally in https://localhost/ i.e. local dev environment. All default page paths are working good. i.e. Via Menu Contributor in Main module, accessing the pages works perfectly. But when deployed to IIS server in Azure VM, via devOps script, same app menu page paths gives 404 error. While diagnosing, have these json responses for the corresponding diagnostic controller method code for your reference. I've also attached the csproj files of the Main module and Lms module. Is there anything I'm setting inadvertently wrong while deploying?
localhost pic: https://prime2dev.blob.core.windows.net/general/host/delete-this-temp/localhost.jpg azure IIS pic: https://prime2dev.blob.core.windows.net/general/host/delete-this-temp/Azure-IIS-Hosted.jpg
if I use this code on server API side to diagnose: [HttpGet("check-razor-pages")] public IActionResult CheckRazorPages() { var pages = _actionDescriptorProvider.ActionDescriptors.Items .OfType<Microsoft.AspNetCore.Mvc.RazorPages.PageActionDescriptor>() .Where(p => p.ViewEnginePath.Contains("Lms") || p.ViewEnginePath.Contains("Events") || p.ViewEnginePath.Contains("Case")) .Select(p => new { ViewEnginePath = p.ViewEnginePath, RelativePath = p.RelativePath, DisplayName = p.DisplayName, RouteTemplate = p.AttributeRouteInfo?.Template, // ← THIS IS CRITICAL RouteValues = p.RouteValues }) .ToList();
return Ok(new
{[https://playwarestudios-my.sharepoint.com/:f:/g/personal/pwsadmin_playwarestudios_onmicrosoft_com/EgMOorRpfYhLikQCbbSlcJIBFC01j6KJVpuq7762tz04dA?e=ZyUqtE](here)
TotalPages = pages.Count,
Pages = pages,
NoRouteTemplates = pages.Where(p => string.IsNullOrEmpty(p.RouteTemplate)).ToList()
});
}
always gives no results.
refer to csproj files and MainWebmodule,cs and LmsWebModule.cs code shared here
Context: I've gone through the modular monolith documentation and in our unique project requirements, we have done this, we created an abp tiered /postgresql (prime_core) solution with all abp modules + MVC app + Auth server. Now the MVC app kinda acts as an admin UI to all abp modules. We also created an angular app for public facing site. Now for the developers involved in each module, we went ahead to create a separate tiered/postgresql solution + MVC app. Then in here, we modified the ef framework connection strings to use prime_core db for all abp modules' data calls. The idea is all abp module will have direct db calls to prime_core db. whereas for this module's entities, we created prime_<module_name> db. Overall every module will have their own databases and for abp modules look to prime_core db.
Problem: As this new module abp solution's MVC app was run against the auth server, authentication works but fails at this call api : https://localhost:44366/api/account/dynamic-claims/refresh and ultimately fails to authenticate and proceed. Add on question: is our approach to avoid full-blown microservice with attached image works good from a abp solution perspective. we need every developer to have their own full solution, admin screens and deploy/test independently and generic angular app take the APIs from these deployed sites. Will permissions/language/distributed events/signalr hub works in this architecture. Refer to 04-final.drawio.pdf
Exception Message and full stack trace: refer to 184 to 219 in the attached authserver-logs.txt Also attached the authserver side logs: webserver-logs.txt
Steps to Reproduce: Create a abp solution : Ldr.Prime.Core (check the attached abp file - abp-solution-prime_Core.txt), you can use local postgresql Create another abp solution Ldr.Prime.Case (check the attached abp file - abp-solution-prime_Case.txt). Modify the appsettings to point to 1st solution Auth server & Remote services + point to a common azure postgresql server and azure redis server, ensure entries are in there in prime_core db for OpenIddictApplications and other tables. Also attached the zip file for both the solutions stripping of sensitive data - Ldr.Prime.CoreAndCase-abpsolutions.zip
Now run the 1st abp solution projects via dotnet run - Web, Http.Host and Auth Server Next run the 2nd abp solution Web project, authenticate via auth server, redirection fails with proper user logged in
All attachments refereed above in google drive https://drive.google.com/drive/folders/1FhCkST09CRyvHky5V2HnYMPePx0LUqcU?usp=sharing
Yes cli and abp suite are same versions. Installed non preview and latest stable which is 5.3.
Screenshot in google drive: https://drive.google.com/file/d/11o041AyebffZsMPaRa1vAd1QFJXK0FF1/view?usp=sharing
Installed abp suite for the verry first time to generate app/microservice template based solution
stack trace / error message [13:42:54 ERR] ---------- RemoteServiceErrorInfo ---------- { "code": null, "message": "An internal error occurred during your request!", "details": null, "data": {}, "validationErrors": null }
[13:42:54 ERR] Object reference not set to an instance of an object. System.NullReferenceException: Object reference not set to an instance of an object.
suspect somehow 6.0 templates gets donwloaded and sbp suite 5.3 using that to generate the solution or how do we force the template version and if so where do I download old templates?