首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将asp.net核心承载的blazor组件部署到Netlify

问将asp.net核心承载的blazor组件部署到Netlify
EN

Stack Overflow用户
提问于 2020-06-14 02:42:42
回答 1查看 747关注 0票数 1

我正在尝试部署一个asp.net核心托管的到Netlify。我已经将服务器项目的发布版本发布到桌面上的一个目录中,并将其上传到github。我将Netlify的发布目录设置为wwwroot,并且站点呈现得很好。但是,如果我尝试调用api控制器,它将返回404。具体来说,这是我的代码:

代码语言:javascript
复制
    //Register.razor in the Client project
    if (Model.Password.Length >= 6 && Model.Password == Model.ConfirmPassword)
    {
        await HttpClient.PostAsJsonAsync<RegisterModel>("api/Register/Post", Model);
        NavigationManager.NavigateTo("/");
    }

    //In my controller
    [Route("api/Register")]
    public class RegisterController : Controller
    {
        private UserContext UserContext { get; set; }
        private IHasher Hasher = new Pbkdf2Hasher();
        public RegisterController (UserContext userContext)
        {
            UserContext = userContext;
        }

        [RequireHttps]
        [HttpPost]
        [Route("Post")]
        public async Task Post([FromBody]RegisterModel model)
        {
            var user = new UserModel
            {
                Email = model.Email,
                Password = Hasher.Hash(model.Password)
            };
            await UserContext.AddAsync(user);
            await UserContext.SaveChangesAsync();
        }
    }

我发送的url请求是:https://(NetlifyDefaultDomain)/api/Register/Post。然而,我得到了404的回复。在本地主机上,它工作得很好。我想象有一个设置,我必须更改某个地方,以使请求URL工作。我试过寻找,但一直找不到指引。我需要改变什么?谢谢

编辑

以下是我的客户端项目的Program.cs文件

代码语言:javascript
复制
public class Program
    {
        public static async Task Main(string[] args)
        {
            var builder = WebAssemblyHostBuilder.CreateDefault(args);
            builder.RootComponents.Add<App>("app");
            builder.Services.AddTransient(sp => new HttpClient { 
            BaseAddress = new Uri(builder.HostEnvironment.BaseAddress) });
            builder.Services.AddBlazoredLocalStorage();
            builder.Services.AddAuthorizationCore();
            builder.Services.AddScoped<AuthenticationStateProvider, 
            ApiAuthenticationStateProvider>();
            builder.Services.AddScoped<IAuthService, AuthService>();
            await builder.Build().RunAsync();
        }
    }

目标框架是netstandard2.1,它的组件是3.2.0。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-15 23:44:30

Netlify是一个静态文件主机。它们不会在服务器上运行任何服务器端应用程序,比如.NET核心。

因此,您可以在Netlify上托管Blazor客户端应用程序,但是如果您希望运行服务器端代码,则必须将其托管在其他地方。

如果您正在寻找免费托管您的API,有一些云提供商有一个免费的层。Azure有一些限制的免费应用程序服务,Google有一个免费的微VPS,可以托管一个小应用程序,heroku也有一个免费的服务。

来自数字海洋、Vultr或Linode的廉价VPS是另一种选择。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62367777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档