如何将 Web 服务从 Visual Studio 发布到 IIS?

Posted

技术标签:

【中文标题】如何将 Web 服务从 Visual Studio 发布到 IIS?【英文标题】:How to publish a Web Service from Visual Studio into IIS? 【发布时间】:2011-04-28 12:58:55 【问题描述】:

我用 C# 编写了一个 WCF Web 服务。我最初是自行托管它,然后决定将它托管在我 PC 上本地运行的 IIS 上。在服务运行时,部署过程中有几个方面我不明白:

首先,托管在 IIS 中的此服务的 URL 与我在 web.config 中指定的不对应。我在那里指定了“http://localhost:8000/MyServices/OrderService”,这在我自托管时使用。现在我已经部署到 IIS,URL 变成了“http://localhost/MyServices/OrderService”。为什么没有从我的配置文件中提取 URL?

其次,为了托管 Web 服务,我在 IIS 中创建了一个新网站(除了现有的“默认网站”之外)。我将物理路径设置为 c:\inetpub\wwwroot (不知道这是否正确)并将其他参数保留为默认值。然后我将我的 /bin 文件夹、我的 .svc 文件和我的 web.config 复制到这个文件夹中。这相当于“虚拟目录”吗?

最后,直到(在 IIS 中)我选择了“转换为应用程序”,该服务才起作用。为什么必须选择“转换为应用程序”?

谁能解释将简单的 Web 服务从 Visual Studio 发布到 IIS 的正确过程,或者指出一些好的文档以便我理解该过程?

****编辑为原始文件***** 花了更多时间研究这个问题后,我发现了以下内容:

当我在 IIS 中创建网站时,我给它一个物理目录 c:\inetpub\wwwroot....等 如果我随后从 Visual Studio 中“发布”,它所做的只是将所有需要的文件(如 /bin 目录、web.config 和 .svc 文件)复制到网站的物理目录中,即 - c:\ inetpub\wwwroot...

您可以手动执行复制以达到相同的效果。

最后,关于我的服务的 URL 与我的 web.config 文件的 baseAddress 部分不对应,这是answered on *** previously。

答案是在 IIS 上托管时完全忽略了 baseAddress。

【问题讨论】:

【参考方案1】:

如果使用 Visual Studio 2010,您可以右键单击该服务的项目,然后选择 properties。然后选择Web 选项卡。在 Servers 部分下,您可以配置 URL。还有一个创建虚拟目录的按钮。

【讨论】:

我试图通过 VS 2012 托管 Web 服务,这对我有帮助。 使用 VS2013 也可以完成这项工作

以上是关于如何将 Web 服务从 Visual Studio 发布到 IIS?的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio:如何将 wsdl 集成到 Web 服务中?

如何在没有 Visual Studio 的情况下发布 ASP.NET Web API?

如何配置 Visual Studio 以使用代码视图作为 Web 服务的默认视图?

在 Visual Studio 2010 上发布 Web 服务

在Visual Studio C#中开发WebService,并从单独的VS解决方案中调用它

Visual Studio 2010 Web 部署任务失败