将WebAPI部署到外部网站

3
我们有一个公共网站已经暴露在外面了,不过实际上里面什么也没有。只有一个"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时,只会看到"The resource you are looking for has been removed, had its name changed, or is temporarily unavailable."。
我确保应用程序池是正确的,并具有适当的用户和成功的通过连接测试。但我就是无法访问服务或URL。
您有什么想法或建议吗?我不确定我还能在这里添加什么其他信息了。在IIS中没有特别之处,服务中也没有特别之处。它只有三个操作。正如我所说的,所有的东西都在本地的localhost下工作得很好。

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

1

IIS 7没有内置支持无扩展名URL的功能,这会导致在运行MVC和Web API应用程序时出现许多问题。我已经使用以下两个选项使其正常运行,请选择适合您的选项。

  1. 安装this IIS patch,使IIS 7能够处理无扩展名URL。

  2. 如果该补丁不可用,因为您担心会影响服务器上的其他站点,则可以进行this answer中提到的Web.config调整。您需要为在服务器上运行的每个MVC/Web API应用程序执行此操作。


1
这是我所做的,同时也将web.config中的httpRuntime和compilation标签注释掉了。这些使我的网站能够正常工作。但我很好奇注释这些标签的后果是什么... - Wizaerd

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