【问题标题】:Deploy WebAPI to external website将 WebAPI 部署到外部网站
【发布时间】:2016-04-20 08:52:33
【问题描述】:

我们有一个已经对外公开的公共网站,尽管实际上那里什么都没有。只需 default.htm 文件,其中包含“即将推出”文本。 (http://vensuresoftware.com/)

我们还整理了一个 WebAPI,希望将其添加到该网站。当我在本地发布到我的 IIS6 时,它没有问题。它以http://localhost/HRConnect/api/Claims 的身份访问就好了。我已经使用 PostMan、一个 C# 客户端和 Javascript AJAX 来访问它就好了。我也可以在该 URL 的浏览器中加载它,并获得适当的默认控制器和操作。

但是,我完全无法在网站上完成同样的事情。理想情况下,我想将其作为虚拟目录包含在http://vensuresoftware.com 中,并以http://vensuresoftware.com/HRConnect/api/Claims 的身份访问它,但我这样做的运气为零。

我尝试将其添加为虚拟目录以及该特定网站下的应用程序,但是当我访问 URL 时,我得到的只是“您要查找的资源已被删除,名称已更改,或暂时不可用。”

我已确保应用程序池是正确的,具有适当的用户并且通过连接测试成功。但我就是无法访问服务或 URL。

关于我可以尝试什么的任何想法或建议?我不确定我还可以在这里包括什么。 IIS 没有什么特别之处,服务也没有什么特别之处。里面只有3个动作。正如我所说,这一切都在本地运行良好,但在 localhost 下。

【问题讨论】:

  • 所以我学到了一些可能会有所帮助的东西。本地 IIS 是 7.5 版,尝试发布它的生产服务器是 IIS 7.0。我在网上阅读了在配置文件中添加 runAllManagedModulesForAllRequests="true" 标记将解决我的问题,但可惜它所做的只是创建了其他错误。例如,看到我用vs2015开发的,目标框架是4.5.2,显然IIS7.0不支持。我尝试将我的项目更改为 4.0,但我所有的 NuGet 模块都开始失败。总而言之,我仍然不确定如何发布 API。
  • 从您的问题中我不清楚您使用什么来尝试部署网站。您使用的是 Visual Studio 的“发布 Web”向导,还是其他?
  • 不管我用什么方法,结果都是一样的。如果我通过 VS 在本地“发布”,它可以工作。如果我通过 VS 远程“发布”,它不起作用。如果我在本地 XCOPY,它可以工作,如果我远程 xcopy,它不起作用。这一切都归结为版本 7 和 7.5 之间 IIS 版本的差异。我已经让它工作了,但我必须在两个系统之间大幅修改我的 web.config 才能使其工作。

标签: c# asp.net iis asp.net-web-api deployment


【解决方案1】:

IIS 7 没有对无扩展 URL 的内置支持,这会导致试图让 MVC 和 Web API 应用程序运行时遇到很多麻烦。我已经使用这两个选项让它工作了。选择适合您的。

  1. 安装this IIS patch,它允许 IIS 7 处理无扩展名 URL。

  2. 如果由于担心破坏服务器上的其他站点而无法选择修补程序,则可以进行 this answer 中的 Web.config 调整。您必须为您在服务器上运行的每个 MVC/Web API 应用程序执行此操作。

【讨论】:

  • 这就是我所做的,以及注释掉 web.config 中的 httpRuntime 和编译标签。这些使我的网站能够正常工作。我很好奇评论这些标签的后果是什么......
猜你喜欢
  • 2017-10-07
  • 2013-10-20
  • 1970-01-01
  • 1970-01-01
  • 2015-10-27
  • 1970-01-01
  • 2020-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多