在单个azure网站中使用虚拟目录

时间:2017-06-11 22:12:41

标签: git azure-web-sites visual-studio-2017 virtual-directory

我发现此answerthis旧文章相符,但两者都不起作用。因此,我在这里要求一个适用于VS2017的新解决方案。 我会详细解释一下: 第一次定义虚拟目录(作为“/ site1”和物理文件夹“site \ site1”)并尝试从VS2017发布时,会收到错误(无法写入指定的路径)并且无法发布。 然后,如果您进入控制台(来自portal.azure.com)并在d:\ site下使用“md site1”手动创建文件夹,则发布过程将起作用(并且已在新文件夹下创建了大量文件)并且完成“1成功...”,但是当您浏览到新的.... / site1时,您会收到以下错误消息: “由于发生内部服务器错误,无法显示页面。”

在网络上无法找到解决此特定错误的任何内容(在一个旧文档中,他们说这是由于2个项目(在同一解决方案中)单独的git回购,一个针对根文件夹而另一个定位虚拟目录,但我无法理解为什么不同的源代码控制在通过VS2017发布时会在生产中遇到麻烦)...

有人知道如何解决这个问题吗?

根据David Ebbo的要求更新: 我认为问题是配置问题Azure端(其他文章没有解释你必须在定义虚拟目录时通过控制台创建物理文件夹)和/或运行时错误(当创建物理文件夹时,VS2017的发布过程工作它成功完成了。)

以下是了解上下文的更多细节: 1)Visual Studio解决方案包含2个项目:一个“主项目”(带有“Hello world!”的空.NET Core项目),其中发布配置文件定位Azure网站的根文件夹+另一个“子项目”(标准MVC Core)。没有自定义的.NET模板项目,其中发布配置文件定位到同一个Azure站点,并将“/ site1”添加到“站点名称”和“站点URL”的尾部。 2)如果我尝试将子项目发布到站点的根文件夹,一切正常(但当然我覆盖“主项目”),因此它不是代码/版本问题。 3)通过控制台,我可以看到文件夹d:\ home \ site \ site1包含与主项目的d:\ home \ site \ wwwroot中存在的文件“类似”。

1 个答案:

答案 0 :(得分:3)

  

首次定义虚拟目录(" / site1"和物理文件夹" site \ site1")并尝试从VS2017发布时,您收到错误(无法写入指定的路径)并且无法发布。

我创建了一个虚拟目录并从VS 2017发布了一个Web应用程序。我无法复制您的问题。以下是我的详细步骤。

步骤1.从Azure门户创建虚拟目录。请确保您已选中[应用程序]复选框并单击[保存]按钮。

enter image description here

步骤2.使用VS 2017部署Web应用程序。从VS部署窗口搜索并选择App Service。

enter image description here

步骤3.单击设置按钮以配置虚拟目录。

enter image description here

步骤4.根据虚拟目录名称更改站点名称和目标URL。

enter image description here

步骤5.单击“发布”按钮以发布Web应用程序。

发布我的Web应用程序后,我可以通过以下URL成功查看Web应用程序。

http://mysitename.azurewebsites.net/site1

请检查我的步骤与您的步骤之间是否存在任何差异。

  

当您浏览到新的.... / site1时,您会收到以下错误消息:"由于发生内部服务器错误,无法显示该页面。"

如果是由您的网络应用程序引起的,我建议您将customErrors模式属性更改为'关闭'查看详细错误消息。

<system.web>
    <customErrors mode="Off" />
</system.web>

编辑2017/6/13 10:37

该问题与ASP.NET Core有关。当我发布ASP.NET Core Web应用程序时,我可以重现这个问题。

我们可以从this official document找到原因。

将应用程序添加到IIS站点的根应用程序时,根应用程序web.config文件应包含该部分,该部分将ASP.NET核心模块添加为应用程序的处理程序。添加到根应用程序的应用程序不应包含该部分。如果重复子应用程序的web.config文件中的部分,当您尝试浏览子应用程序时,将收到引用错误配置文件的500.19(内部服务器错误)。

要解决此问题,我们需要编辑此子目录中的web.config文件。我们可以使用kudu控制台来完成它。单击web.config文件前面的编辑​​按钮。

enter image description here

删除aspNetCore处理程序并单击“保存”。

enter image description here