我已经开发了一个仅由WebApi组成的项目,该项目是通过VS WebDeploy在Webspace的根部进行部署的。
有了新的要求,我还需要在同一个Web空间(Razor页面)中托管一个Web应用程序。
我决定在Visual Studio解决方案中将项目分开,然后将API发布到{root}/webapi/
文件夹中,将Razor Webapp发布到{root}
文件夹中。
我首先将webapi重新发布到新的文件夹位置并进行了测试API调用(将文件夹位置添加为url的一部分,因此添加了http:/example.com/ webapi / route) ,但服务器返回了Server Error in '/' Application. Runtime Error
。
我想知道在将项目移至子文件夹时是否需要更改其他参数,欢迎使用其他任何解决方案来解决我要解决的问题。
PS:我无权访问主机的IIS服务器设置
答案 0 :(得分:2)
我不是在IIS上托管.NET Core应用程序的专家,但是如果您不允许更改IIS服务器配置,则很有可能无法使此安装程序起作用。我假设您需要将嵌套的API项目添加为网站,以使IIS实际运行它。
因此,看来您需要某种多租户。由于您的问题是关于Razor Pages的,所以我想我们在这里使用的是ASP.NET Core,而不是经典的ASP.NET(由您的标签建议)。
在ASP.NET Core中,使用application branches设置多租户应用程序非常容易。在这种情况下,主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 可以驻留在另一个程序集中,因此您可以使两个项目在逻辑上分开。
关于此解决方案有一个陷阱。主分支和Web api分支都共享在主项目的 Startup.ConfigureServices 中配置的同一个DI容器。但是,如有必要,也可以解决此问题。您可以找到对此的详细说明,例如here。