MSdeploy使用错误的虚拟目录名称部署MVC 2应用程序

4

我正在使用MSbuild(v4.0.30319.1)和MSdeploy(v7.1.618.0)来部署我的ASP MVC 2应用程序到IIS(v7.5)。以下是我执行的命令:

msbuild.exe <path to my csproj>/MyMvcApp.csproj /t:Package /p:configuration=release;outDir=<my output dir>

以及msdeploy:

msdeploy.exe -verb:sync -source:package='<MSBuildOutputDir>\_PublishedWebsites\Webui_Package\MyMVCApp.zip' -dest:auto 

构建和部署后,应用程序的部署地址是http://localhost/MyMVCApp_deploy而不是http://localhost/MyMVCApp。我没有预料到_deploy会在地址中出现。如何解决这个问题?

2个回答

12

如Portalus所评论的那样,您可以在属性页面中控制应用程序的名称。在此处我将扩展一下答案。

配置PP/Web选项卡上的默认值

默认情况下,当您打包/发布Web项目时,我们将创建一个名为“ IIS Web应用程序名称”的Web部署参数,该参数控制此值。默认值为ProjectName_deploy。我们在那里添加_deploy后缀的原因是对于IIS场景。 因此,您可能已经有一个名称为 ProjectName 的IIS应用程序,但是其名称为 ProjectName_deploy 的可能性要小得多。 您可以在项目属性的 Package/Publish Web 选项卡上自定义此值。请记住,如果您选择这种方式,则所有这些设置都与特定的构建配置相关联。 因此,如果您在 Debug 上配置了设置,并使用 Release 创建软件包,则这些设置不会应用。请参见下面的图像。

输入图像描述

当您设置此值时,它会设置MSBuild属性DeployIisAppPath,如果您想要与获取的值相关联的某些逻辑,可以使用它。

发布时传递参数值

如果需要,您还可以在发布时指定此参数的值。 这里有两种主要方法。

  1. 指定单个属性的值
  2. 在文件中指定此和其他属性的值

1. 指定单个属性的值:

您可以在调用msdeploy.exe时使用-setParam参数来为该参数提供新值。例如:

%msdeploy% -verb:sync -source:package=WebApplication3.zip -dest:auto -setParam:name="IIS Web Application Name",value="Default Web Site/FooBar"

2. 指定文件中的this和其他属性的值

在VS中创建软件包时,我们会为您自动创建名为{ProjectName}.SetParameters.xml的文件。这是一个简单的XML文件,其中包含了所有参数及其默认值。您可以更新该文件以包含正确的参数值,然后将其传递给msdeploy.exe (注意:该文件不必命名为...SetParameters.xml,您可以将其重命名为任何您想要的名称)。如果您想使用这种方法,则只需在调用msdeploy.exe时使用-setParamFile参数即可。以下是此方法的命令行语法示例:

%msdeploy% -verb:sync -source:package=WebApplication3.zip -dest:auto -setParamFile=WebApplication3.SetParameters.xml

在使用Web部署包时,我必须像这样转义参数:xxx.deploy.cmd "-setParam:name='IIS Web Application Name',value='Default Web Site/FooBar'"。 - Hallvar Helleseth

2

在设置中更改应用程序名称。

右键单击 Web 项目,点击属性。进入“打包/发布 Web”选项,将应用程序名称从“default web site/mymvcapp_deploy”更改为“default website/mymvcapp”,以便在目标服务器上使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接