【发布时间】:2018-07-17 02:38:32
【问题描述】:
我在 asp.net core 2.1 中有两个项目。一个是主 Web 应用程序,另一个是子应用程序。子应用程序大部分是独立的;它只需要来自主应用程序的 cookie。
我正在尝试在我的本地开发环境中设置这两个项目但失败了,而且我还需要为将来的实时 IIS 部署进行设置。我在同一个 VS 解决方案中有两个 VS 项目。在他们的项目调试设置页面中,我将它们都设置为启动 IISExpress,应用 URL 为“http://localhost:44305”。我也尝试将子应用设置为“http://localhost:44305/subapp”,但是当 vs 运行时,IISExpress 抱怨该端口已在使用中。
我有两个应用程序的网络配置。两者的非常基本的默认值。在子应用程序中,我有额外的行来删除 aspnetcore 处理程序(正如我在搜索中发现的那样)。
<remove name="aspNetCore" />
在子应用中,我也尝试过在startup.cs中添加:
app.UsePathBase("/subapp")
我从在本地运行的这个设置中得到的结果是,在基本 URL 上,它实际上加载了我的子应用程序而不是我的主应用程序(浏览器 URL 是 localhost:44305)。摆弄多种设置似乎无济于事。两个应用程序都无法完全加载,或者一个或另一个应用程序无法访问。
是否有任何适当的文档可用于设置多个应用程序以在本地和 IIS 中协同工作?我似乎找到的所有东西都来自 2.0 之前的版本。
感谢您的帮助!
编辑: 在部署到 IIS 时,我实际上设法让一个新项目作为子应用程序工作。设置:
使用两个 aspnetcore 2.1 Web 应用程序制作新的 VS 解决方案。
-
将 web.config 添加到子应用程序中:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers> </handlers> <aspNetCore processPath="dotnet" arguments=".\IISTestSubApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" /> </system.webServer> </configuration> 主应用没有网络配置。
将 .UseIISIntegration() 添加到 Program.cs CreateWebHostBuilder 到两个应用程序。
在 Startup.cs 中为 Subapp 配置方法,添加
app.UsePathBase("/subapp/");将主应用程序部署到文件夹 /Mainapp。将子应用部署到 /Mainapp/subapp。
为主应用设置 iis 网站。
在 IIS 中右键单击主应用程序网站,然后单击添加应用程序。添加具有别名“/Subapp”的子应用程序
这应该就是你所需要的。有些步骤可能不是必需的。我还没有完全测试过哪些步骤是 100% 必要的。
不幸的是,我仍然无法让它与 IISExpress 一起工作。我的 .vs/applicationhost.config 文件看起来几乎与 IIS 文件一模一样,但是当同时运行这两个应用程序时,我收到错误消息,指出端口已在使用中。我还在尝试一堆新东西,所以,我们看看能不能搞定。
【问题讨论】:
-
这可能会让我更接近一点。你还有什么可以提供的信息吗?喜欢正确的网络配置?我应该使用 PathBase 吗?
-
通过您的更改,我的主应用程序正在加载,但子应用程序收到 HTTP 错误 403.14 - 禁止
-
我已经撤回了我的提交,因为我发现使用属性路由时似乎存在路由问题。我不确定还有什么建议我害怕。抱歉,我不能提供更多帮助。
-
@john 是的,我似乎几乎可以让它工作,但是当我运行应用程序时,它会自动将应用程序池切换到其他东西。
-
我认为可能的问题出在主应用程序的 webconfig 中,其中添加了 aspnet 处理程序。它设置为具有 path=' * ' 和 verb=' * '。是否可以忽略路径'/subapp/'?我尝试为我的主应用程序添加特定路径,而不是 *,但它似乎不起作用。我不知道这个设置的参数是如何格式化的。
标签: c# iis asp.net-core