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

发布于 2024-12-17 19:35:03 字数 584 浏览 2 评论 0原文

我正在使用 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。 我该如何解决这个问题?

I'm using MSbuild(v4.0.30319.1) and MSdeploy(v7.1.618.0) to deploy my ASP MVC 2 application on IIS(v7.5).
Here are the commands I run to do it:

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

and msdeploy:

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

After build and deploy the application is deployed by address http://localhost/MyMVCApp_deploy and not by address http://localhost/MyMVCApp.
I did not expect that the _deploy will be in the address.
How can I fix this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

红焚 2024-12-24 19:35:03

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

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

默认情况下,当您打包/发布 Web 项目时,我们将创建一个名为 IIS Web 应用程序名称 的 Web 部署参数来控制此值。默认值为
项目名称_部署。我们之所以放_deploy后缀是为了IIS场景。因此,您可能已经有一个名为 ProjectName 的 IIS 应用程序,但不太可能有一个名为 ProjectName_deploy 的应用程序。您可以在项目属性的“打包/发布 Web”选项卡上自定义此值。如果您采用此方法,需要记住的一件事是所有这些设置都与特定的构建配置相关联。因此,如果您在“调试”上配置设置并使用“发布”创建包,则这些设置将不适用。见下图。

在此处输入图像描述

设置此值时,它会设置 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. 在文件中指定此属性和其他属性的值

当您在 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

As Portalus commented you can control the name of the app in the properties page. I'll expand a bit on that answer here.

Configure the default value on PP/Web tab

By default when you package/publish your web project we will create an Web Deploy parameter named IIS Web Application Name which controls this value. The default value for this is
ProjectName_deploy. The reason why we put the _deploy suffix there is for IIS scenarios. So you may already have an IIS app with the name of ProjectName but its much less likely that you will have one named ProjectName_deploy. You can customize this value on the Package/Publish Web tab of the project properties. One thing to keep in mind if you go this route is that all of these settings are tied to a specif build configuration. So if you configure the settings on Debug and the create your package using Release those settings will not apply. See image below.

enter image description here

When you set this value it sets the MSBuild property, DeployIisAppPath, and you can use that if you want to have some logic relating to the value it gets.

Pass the parameter value on publish

If you want you can also just specify the value of this parameter when you are publishing. You have two primary approaches here.

  1. Specify the value for the individual property
  2. Specify the value for this and other properties in a file

1. Specify the value for the individual property:

You can use the -setParam parameter when calling msdeploy.exe to give a new value for that parameter. For example:

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

2. Specify the value for this and other properties in a file

When you create a package in VS we automatically create for you a file named {ProjectName}.SetParameters.xml. This file is a simple XML file and it will contain all the parameters, along with their default values. You can update that file to include the correct parameter values and then pass it into msdeploy.exe (note: the file doesn't have to be named ...SetParameters.xml you can rename it to whatever you want). If you want to use this approach then just use the -setParamFile parameter when calling msdeploy.exe. Here is an example of the command line syntax for this:

%msdeploy% -verb:sync -source:package=WebApplication3.zip -dest:auto -setParamFile=WebApplication3.SetParameters.xml
一场春暖 2024-12-24 19:35:03

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

右键单击 Web 项目并点击属性。转到 package/publish web,将目标服务器上使用的应用程序名称从“default web site/mymvcapp_deploy”更改为“default website/mymvcapp”

Change the application name in the settings.

Right click the web project hit properties. Go to package/publish web, change the application name to use on the destiantion server from "default web site/mymvcapp_deploy" to "default website/mymvcapp"

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文