Skip to content

API Controllers routes isn't working on Blazor Server Side #9437

Closed
@baartho

Description

@baartho

Describe the bug

Defining routes / endpoints for API Controllers on a Blazor Server-Side project isn`t working. I had it working on previous Blazor versions but can't it to work on 0.9.0-preview3-19154-02.

To Reproduce

startup.cs code:

        public void ConfigureServices(IServiceCollection services)
        {
   services.AddMvc().AddNewtonsoftJson().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Version_3_0);
        services.AddRazorPages();
        services.AddServerSideBlazor();`

        //services.AddAuthentication(o => o.DefaultAuthenticateScheme = AzureADB2CDefaults.CookieScheme)
        //    .AddAzureADB2C(options => Configuration.Bind("AzureADB2C", options))
        //    .OnLogin(principal =>
        //    {
        //        services.BuildServiceProvider().GetRequiredService<LoginCommand>()
        //            .Execute(principal, principal.AzureID(), principal.Email(), principal.DisplayName());
        //    });

        services.AddBlazorModal();
        AddRepositories(services);
        AddCommands(services);
        AddHttpClient(services);
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        //app.UseAuthentication();
        //app.UseMvcWithDefaultRoute();

        app.UseRouting();

        //app.UseMvc();

        //app.UseMvc(routes =>
        //{
        //    routes.MapRoute(
        //      name: "default",
        //      template: "{controller=Home}/{action}/{id?}");
        //});
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller}/{action}");

            endpoints.MapControllers();
            //endpoints.MapRazorPages();

            endpoints.MapBlazorHub();
            endpoints.MapFallbackToPage("/_Host");
        });
    }

API Controller:

        [Produces("application/json")]
        [Route("api/[controller]")]
        [ApiController]
        public class DataController : Controller
        {
        [HttpPost]
        [Route("UploadPhoto")]
        public async Task<string> UploadFile(UploadFileParameters file)
        {
              return null;
        }

    [HttpGet]
    [Route("Test")]
    public string Test()
    {
        return "abc";
    }
}`

Expected behavior

Posting to https://localhost:xxxxx/api/Data/UploadPhoto
Or getting from: https://localhost:xxxxx/api/Data/Test should work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area-mvcIncludes: MVC, Actions and Controllers, Localization, CORS, most templates

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions