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

时间:2011-11-24 11:13:20

标签: iis msbuild iis-7.5 msdeploy asp.net-mvc

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

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 个答案:

答案 0 :(得分:12)

正如Portalus所述,您可以在属性页面中控制应用程序的名称。我将在这里扩展一下这个答案。

在PP /网络标签上配置默认值

默认情况下,打包/发布Web项目时,我们将创建一个名为 IIS Web应用程序名称的Web部署参数来控制此值。这个的默认值是 的 ProjectName_deploy 即可。我们将_deploy后缀放在那里的原因是IIS场景。因此,您可能已经拥有一个名为 ProjectName 的IIS应用程序,但更不可能有一个名为 ProjectName_deploy 的应用程序。您可以在项目属性的包/发布Web 选项卡上自定义此值。如果你走这条路线,要记住的一件事是所有这些设置都与特定的构建配置相关联。因此,如果您在 Debug 上配置设置并使用 Release 创建包,则这些设置将不适用。见下图。

enter image description here

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

在发布

上传递参数值

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

  1. 指定单个属性的值
  2. 指定文件中此属性和其他属性的值
  3. 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。在文件

    中指定此属性和其他属性的值

    在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
    

答案 1 :(得分:2)

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

右键单击Web项目匹配属性。转到打包/发布Web,将要在destiantion服务器上使用的应用程序名称从“default web site / mymvcapp_deploy”更改为“default website / mymvcapp”