在单个 Azure 网站中使用虚拟目录
using virtual directories in a single azure website
我找到了这篇 coherent to this 旧文章,但两者都不起作用。因此,我在这里询问一个适用于 VS2017 的新解决方案。
我会更详细地解释:
第一次定义虚拟目录(如“/site1”和物理文件夹 "site\site1")并尝试从 VS2017 发布时,您会收到错误消息(无法写入指定路径)并且无法发布。
然后,如果您进入控制台(从 portal.azure.com)并使用 "md site1" 在 d:\site 下手动创建文件夹,则发布过程有效(并且已在新文件夹下创建了很多文件)并以“1 成功...”结束,但是当您浏览到新的 ..../site1 时,您会收到以下错误消息:
"The page cannot be displayed because an internal server error has occurred."
在网络上找不到任何解决此特定错误的方法(在一份旧文档中,他们说这是由于 2 个项目(在同一解决方案中)的单独 git 回购,一个针对根文件夹和另一个针对虚拟目录的文件夹,但我不明白为什么不同的源代码控制在通过 VS2017 发布时会在生产中造成麻烦)...
有人知道如何解决这个问题吗?
根据 David Ebbo 的要求更新:
我认为问题是 Azure 方面的配置问题(其他文章没有说明在定义虚拟目录时必须通过控制台创建物理文件夹)and/or 运行时错误(创建物理文件夹时发布过程来自VS2017 运行并成功完成)。
这里有更多细节来理解上下文:
1) Visual Studio 解决方案包含 2 个项目:一个 "main project"(具有 "Hello world!" 的空 .NET Core 项目)发布配置文件以 Azure 网站的根文件夹为目标 + 另一个 "child project" (没有自定义的标准 MVC Core.NET 模板项目)发布配置文件针对同一 Azure 站点,“/site1”添加到 "site name" 和 "site url" 的尾部。
2) 如果我尝试将子项目发布到站点的根文件夹,一切正常(当然我覆盖了 "main project"),因此这不是 code/version 问题。
3) 通过控制台,我可以看到文件夹 d:\home\site\site1 包含文件 "similar" 到主项目 d:\home\site\wwwroot 中存在的文件。
First time you define a virtual directory (as "/site1" and physical folder "site\site1") and try to publish from VS2017, you receive an error (cannot write into the specified path) and cannot publish.
我创建了一个虚拟目录并从 VS 2017 发布了一个 Web 应用程序。我无法重现你的问题。这是我的详细步骤。
步骤 1. 从 Azure 门户创建虚拟目录。请确保您已选中[应用]复选框并单击[保存]按钮。
步骤 2. 使用 VS 2017 部署 Web 应用程序。从 VS 部署中搜索并选择应用服务 window。
步骤 3. 单击设置按钮配置虚拟目录。
第 4 步。根据虚拟目录名称更改站点名称和目标URL。
第 5 步。单击发布按钮发布 Web 应用程序。
发布我的网络应用后,我可以通过关注URL.
成功查看网络应用
http://mysitename.azurewebsites.net/site1
请检查我的步骤是否与您的步骤有任何差异。
when you browse to the new ..../site1 you receive the following error message: "The page cannot be displayed because an internal server error has occurred."
如果它是由您的网络应用程序引起的,我建议您将 customErrors 模式 属性 更改为 'Off' 以查看详细错误消息。
<system.web>
<customErrors mode="Off" />
</system.web>
编辑 2017/6/13 10:37
此问题与 ASP.NET 核心有关。当我发布 ASP.NET 核心 Web 应用程序时,我可以重现该问题。
我们可以从this official document中找到原因。
将应用程序添加到 IIS 站点的根应用程序时,根应用程序 web.config 文件应包含将 ASP.NET 核心模块添加为应用程序处理程序的部分.添加到根应用程序的应用程序不应包含该部分。如果您在 sub-application 的 web.config 文件中重复该部分,您将在尝试浏览 sub-application.[= 时收到引用错误配置文件的 500.19(内部服务器错误) 66=]
为了解决这个问题,我们需要编辑这个子目录下的web.config文件。我们可以使用 kudu 控制台来完成。单击 web.config 文件前面的编辑按钮。
删除 aspNetCore 处理程序并单击保存。
我找到了这篇
在网络上找不到任何解决此特定错误的方法(在一份旧文档中,他们说这是由于 2 个项目(在同一解决方案中)的单独 git 回购,一个针对根文件夹和另一个针对虚拟目录的文件夹,但我不明白为什么不同的源代码控制在通过 VS2017 发布时会在生产中造成麻烦)...
有人知道如何解决这个问题吗?
根据 David Ebbo 的要求更新: 我认为问题是 Azure 方面的配置问题(其他文章没有说明在定义虚拟目录时必须通过控制台创建物理文件夹)and/or 运行时错误(创建物理文件夹时发布过程来自VS2017 运行并成功完成)。
这里有更多细节来理解上下文: 1) Visual Studio 解决方案包含 2 个项目:一个 "main project"(具有 "Hello world!" 的空 .NET Core 项目)发布配置文件以 Azure 网站的根文件夹为目标 + 另一个 "child project" (没有自定义的标准 MVC Core.NET 模板项目)发布配置文件针对同一 Azure 站点,“/site1”添加到 "site name" 和 "site url" 的尾部。 2) 如果我尝试将子项目发布到站点的根文件夹,一切正常(当然我覆盖了 "main project"),因此这不是 code/version 问题。 3) 通过控制台,我可以看到文件夹 d:\home\site\site1 包含文件 "similar" 到主项目 d:\home\site\wwwroot 中存在的文件。
First time you define a virtual directory (as "/site1" and physical folder "site\site1") and try to publish from VS2017, you receive an error (cannot write into the specified path) and cannot publish.
我创建了一个虚拟目录并从 VS 2017 发布了一个 Web 应用程序。我无法重现你的问题。这是我的详细步骤。
步骤 1. 从 Azure 门户创建虚拟目录。请确保您已选中[应用]复选框并单击[保存]按钮。
步骤 2. 使用 VS 2017 部署 Web 应用程序。从 VS 部署中搜索并选择应用服务 window。
步骤 3. 单击设置按钮配置虚拟目录。
第 4 步。根据虚拟目录名称更改站点名称和目标URL。
第 5 步。单击发布按钮发布 Web 应用程序。
发布我的网络应用后,我可以通过关注URL.
成功查看网络应用http://mysitename.azurewebsites.net/site1
请检查我的步骤是否与您的步骤有任何差异。
when you browse to the new ..../site1 you receive the following error message: "The page cannot be displayed because an internal server error has occurred."
如果它是由您的网络应用程序引起的,我建议您将 customErrors 模式 属性 更改为 'Off' 以查看详细错误消息。
<system.web>
<customErrors mode="Off" />
</system.web>
编辑 2017/6/13 10:37
此问题与 ASP.NET 核心有关。当我发布 ASP.NET 核心 Web 应用程序时,我可以重现该问题。
我们可以从this official document中找到原因。
将应用程序添加到 IIS 站点的根应用程序时,根应用程序 web.config 文件应包含将 ASP.NET 核心模块添加为应用程序处理程序的部分.添加到根应用程序的应用程序不应包含该部分。如果您在 sub-application 的 web.config 文件中重复该部分,您将在尝试浏览 sub-application.[= 时收到引用错误配置文件的 500.19(内部服务器错误) 66=]
为了解决这个问题,我们需要编辑这个子目录下的web.config文件。我们可以使用 kudu 控制台来完成。单击 web.config 文件前面的编辑按钮。
删除 aspNetCore 处理程序并单击保存。