为了账号安全,请及时绑定邮箱和手机立即绑定

ASP.NET WebAPI 和 Razor Pages 位于同一 Web 位置

ASP.NET WebAPI 和 Razor Pages 位于同一 Web 位置

C#
慕码人2483693 2021-12-05 14:49:03
我开发了一个只包含一个 WebApi 的项目,它是通过 VS WebDeploy 部署在 webspace 的根目录下的。有了新的需求,我还需要在同一个网络空间(Razor 页面)中托管一个网络应用程序。我决定在我的 Visual Studio 解决方案中将项目分开,并将 API 发布到{root}/webapi/文件夹中,并将 Razor webapp发布到文件{root}夹中。我首先将 webapi 重新发布到新文件夹位置并进行测试 API 调用(将文件夹位置添加为 url 的一部分,因此 http:/example.com/ webapi /route),但服务器返回Server Error in '/' Application. Runtime Error.我想知道在将项目移动到子文件夹时是否需要更改其他一些参数,欢迎使用任何其他解决方案来解决我正在尝试解决的问题。PS:我无权访问主机的 IIS 服务器设置
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

我不是在 IIS 上托管 .NET Core 应用程序的专家,但如果不允许更改 IIS 服务器配置,则可能无法使此设置工作。我假设您需要将嵌套的 API 项目添加为网站,以使 IIS 实际运行它。


所以,看起来您需要某种多租户。由于您的问题是关于 Razor Pages,我认为我们在这里处理的是 ASP.NET Core,而不是经典的 ASP.NET(由您的标签建议)。


在 ASP.NET Core 中,使用应用程序分支设置多租户应用程序非常容易。在这种情况下,您的 Razor Pages 主项目的Startup.Configure方法将如下所示:


public void Configure(IApplicationBuilder app)

{

    app.Map("/webapi", ConfigureWebApiBranch);


    // configuration of your Razor Pages app pipeline...


    app.UseMvc(...);

}


public void ConfigureWebApiBranch(IApplicationBuilder app)

{

    // configuration of your Web Api app pipeline...


    app.UseMvc(...);

}

当然,ConfigureWebApiBranch可以驻留在另一个程序集中,因此您可以保持两个项目在逻辑上分开。


关于此解决方案有一个问题。main 和 web api 分支共享在主项目的Startup.ConfigureServices中配置的同一个 DI 容器。但这也可以在必要时修复。您可以在此处找到对此的详细说明。


查看完整回答
反对 回复 2021-12-05
  • 1 回答
  • 0 关注
  • 185 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信