Activities of "AdamMusson"

Don't worry! It's affecting all pages now and not just ones in abp projects so I think it is a problem with my visual studio or IIS being corrupted somehow

  • ABP Framework version: v8.1.3
  • UI Type: MVC
  • Database System: EF Core (SQL Server)
  • Tiered (for MVC) or Auth Server Separated (for Angular): no

When I create a brand new project and I add a module using abp suite I cannot access the web pages in the module. Whenever I go to the admin section and try to navigate to the Index page generated by abp suite I get a 404 error. I have tried lots of variations on the URL and also tried to add a special URL using the page directive in the index page. It also doesn't find the sample Index page that is added when you first create a module.

Has something changed in order to configure routes for web pages in modules? It always worked ok previously. My module is called Codes. I have tried https://localhost:44347/Codes/Codes https://localhost:44347/Codes/ I have tried putting in a specifi URL in the page directive and that is also not working.

I have set the permissions for the admin role to be able to perform CRUD.

TCheck the docs before asking a question: https://docs.abp.io/en/commercial/latest/ Check the samples, to see the basic tasks: https://docs.abp.io/en/commercial/latest/samples/index The exact solution to your question may have been answered before, please use the search on the homepage.

If you're creating a bug/problem report, please include followings:

  • ABP Framework version: v7.0.1
  • UI type: MVC
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no
  • Exception message and stack trace
  • 403: Forbidden:
  • Steps to reproduce the issue:"

I have configured the application to use the DomainName Tenant resolver

var mydomain = configuration["App:Domain"];
Configure<AbpTenantResolveOptions>(options =>
{
    options.AddDomainTenantResolver("{0}." + mydomain);
});

If I do it this way I have to create a new Website under IIS and setup DNS records for the subdomain for each new tenant and also purchase a new SSL Certificate for each subdomain so that it can have the Https://. Is there a better way to manage the creation and management of the tenants?
I can't find any documentation anywhere on how to configure the other TenantReolvers such as the RouteTenantResolveContributor.
How do we set up the Url for this one?

Maybe I am configuring the DOmainTenant resolver incorrectly and there is a way around having to setup the subdomain in IIS and purching a SSL certificate for each tenant. If so then can you let me know what I should be doing instead. If this is needed for the DomaiinTenantResolver can you let me know where I can find documentation on how to configure the other tenant resolvers and what the format of the Url would look like where this is applicable?

Thanks

Thanks, adding Microsoft.Extensions.FileProviders.Embedded did the trick. It works now so you can close this question and consider it answered.

Thanks for your help!

I've made those changes and redeployed the app again but I am still getting the error that it can't find the embedded files when the app is deployed. It runs fine locally.

Have you run on this on a deployed version or just locally on your machine? Because it sends me the email too when run on localhost connected to the database but as soon as I run it on the deployment server it complains about not being able to find the embedded files.

I've made the changes and uploaded them to the Github.

Hi, I have shared a demo project Github repository with you so you can see a project based on the template project illustrating the problem. The code connects to the same database that has been deployed to myasp.net and as you can see works in Debug on the local machine.

http://vfsdemo-001-site1.btempurl.com/ Is the Url you can see the code is deployed to. When you run it here and try to register the registration will fail because the ConfirmEmail template can't be found.

On localhost the code works because of the ReplaceEmbeddedAsPhysical. On the deployed version it doesn't work because the EmbeddedFiles aren't being found in the virtualfilesyste,.

Everything else is the same as both the local and deployed code are pointing to the same database. Any help in what I have done wrong here, if it isn't a bugm, would be helpful.

Let me know if you need anything else. Thanks

If you're creating a bug/problem report, please include followings:

  • ABP Framework version: v7.0.1
  • UI type: MVC
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): No
  • Exception message and stack trace: Could not find a file/folder at the location: /Templates/ConfirmEmail.cshtml
  • Steps to reproduce the issue: I have followed steps in articles for overriding the registermodel with a custom one that has some steps for my application's registration. The EmailTemplate for the ConfirmEmail is located in the Templates directory in the DomainModule project. The system sends the email and everything works fine locally but when it is deployed to IIS the VirtualFileSystem is not picking up the /Templates/ConfirmEmail.cshtml even though it is an embedded resource.

I have this code in the WebModule to configure the VirtualFIleSystem

 private void ConfigureVirtualFileSystem(IWebHostEnvironment hostingEnvironment)
    {
        Configure<AbpVirtualFileSystemOptions>(options =>
        {
            options.FileSets.AddEmbedded<HourcoinWebModule>();
            options.FileSets.AddEmbedded<HourcoinDomainModule>(
                 baseNamespace: "Hourcoin.Templates",
                 baseFolder: "/Templates");

            options.FileSets.AddEmbedded<RegistrationDomainModule>();
            


            if (hostingEnvironment.IsDevelopment())
            {

                options.FileSets.ReplaceEmbeddedByPhysical<HourcoinDomainSharedModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}Hourcoin.Domain.Shared", Path.DirectorySeparatorChar)));
                options.FileSets.ReplaceEmbeddedByPhysical<HourcoinDomainModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}Hourcoin.Domain", Path.DirectorySeparatorChar)));
                options.FileSets.ReplaceEmbeddedByPhysical<HourcoinApplicationContractsModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}Hourcoin.Application.Contracts", Path.DirectorySeparatorChar)));
                options.FileSets.ReplaceEmbeddedByPhysical<HourcoinApplicationModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}Hourcoin.Application", Path.DirectorySeparatorChar)));
                options.FileSets.ReplaceEmbeddedByPhysical<HourcoinHttpApiModule>(Path.Combine(hostingEnvironment.ContentRootPath, string.Format("..{0}..{0}src{0}Hourcoin.HttpApi", Path.DirectorySeparatorChar)));
                options.FileSets.ReplaceEmbeddedByPhysical<HourcoinWebModule>(hostingEnvironment.ContentRootPath);
            }
        });
    }

This works in development as the Physical File is used using the above ReplaceEmbeddedByPhysical. When deployed to IIS at myasp.net the email is not working because the template is not being rendered. I have caught the error and displayed it in the following screenshot image.

I have made sure the files in the Templates directory are Embedded Resources.

What could I be missing? Any help or suggestions would be appreciated .as i have followed all the documentation I can find and have not had any luck. I keep getting the error even after specifically ensuring the environment is Production in the web.c onfig which shouldn't be necessary. Is there a bug in the VirtualFIleSystem?

Hi, I had a working Text Templating Email with a layout using the Razor Engine in version 6.0.

Now I have updated the project to version 7.0.1 and it didn't compile due to the .withRazorEngine() line in the following code in the EmailTemplateDefinitionProvider class

 public override void Define(ITemplateDefinitionContext context)
        {
            context.Add(
               new TemplateDefinition(
                   "EmailLayout",
                   isLayout: true
               )
               .WithRazorEngine()
               .WithVirtualFilePath(
                   "/Templates/EmailLayout.cshtml",
                   isInlineLocalized: true
               )
            );


            context.Add(new TemplateDefinition("ConfirmEmail",
                                                typeof(HourcoinResource), 
                                                layout: "EmailLayout")
                                   .WithVirtualFilePath(
                                       "/Templates/ConfirmEmail.cshtml",
                                       isInlineLocalized: true
                                      
                                   )
                                  .WithRazorEngine()
            );

            
        }

To get the code to compile I had to remove the .WithRazorEngine() line

I thought there may have been an update and so following the TextTemplating documentation for version 7 I used the following command abp add-package Volo.Abp.TextTemplating.Razor and got the following message.

[13:03:04 WRN] 'Volo.Abp.TextTemplating.Razor' nuget package could not be found!

So now I receive the email but instead of it being rendered I see the @Body from the EmailLayout instead of the contents from the model.

It appears the documentation is therefore out of date. How can I get this to work in version 7? Has it moved to another package?

Kind Regards

  • ABP Framework version: v7.0.1
  • UI type: MVC
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no

No Exception the email is sent but it isn't rendered by the razor engine as it doesn't seem to be there anymore.

  • Steps to reproduce the issue:"

I think there is a bug in the CmsKit in that you can't override the model and view as you should be able to do under the normal Abp principles. The OnGet method in the base class cannot be overriden.

How can I solve this as I do not have access to the source code to completely write my own handler by copying everything in the base class and building it up from there?

  • ABP Framework version: v6.0.0-rc.4
  • UI type: MVC
  • DB provider: EF Core
  • Tiered (MVC) or Identity Server Separated (Angular): no
  • Exception message and stack trace:

InvalidOperationException: Multiple handlers matched. The following handlers matched route data and had all constraints satisfied: Void OnGetAsync(), System.Threading.Tasks.Task OnGetAsync()

  • Steps to reproduce the issue:"
    1. Create a view Index.cshtml in a folder ~Pages/Public/CmsKit/Blogs/ in the Public Website project - this is to override that view
    1. Create a model BlogIndexModel that inherits from **Volo.CmsKit.Public.Web.Pages.Public.CmsKit.Blogs.IndexModel ** This works according to the naming conventions.
    1. Try to create an OnGet or OnGetAsync method so that you can setup the model for your overridden Blogs Page. For example

public BlogPostPublicDto LatestPost { get; set; } public void OnGetAsync() { base.OnGetAsync(); LatestPost = base.Blogs.Items.OrderByDescending(d => d.CreationTime).Take(1).First();

}

This compiles but throws the exception because of the OnGet handler in the base class.

public new void OnGetAsync() to hide the base class implementation also compiles but still get the same Exception as multiple handlers match when you run it.

The fix would normally be to override the method. I've done this with other pages but it doesn't work here.

public override void OnGetAsync() { }

But this doesn't compile as the OnGet method in the base class has not been marked virtual and cannot be overridden. Any help to sort this out would be appreciated.

Thanks - that's great. I noticed you have checked this into the Abp MailKitSmtpEmailSender too now. Will this be included in the version 6.0 final release? Or will it be sometime later that we will no longer need to do this override ourselves?

Thanks a lot.

顯示 15 個紀錄的 1 到 10 個.
Made with ❤️ on ABP v8.2.0-preview Updated on 3月 25, 2024, 15:11