Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将WebAPI部署到外部网站_C#_Asp.net_Iis_Asp.net Web Api_Deployment - Fatal编程技术网

C# 将WebAPI部署到外部网站

C# 将WebAPI部署到外部网站,c#,asp.net,iis,asp.net-web-api,deployment,C#,Asp.net,Iis,Asp.net Web Api,Deployment,我们有一个已经对外公开的公共网站,尽管实际上什么都没有。只需使用包含“即将到来”文本的default.htm文件即可。() 我们还准备了一个WebAPI,我们想添加到这个网站上。当我在本地发布到IIS6时,它不会有问题。一切都很好。我使用了PostMan、C#客户端和Javascript AJAX来访问它。我还可以将它加载到该URL的浏览器中,并获得相应的默认控制器和操作 然而,我完全无法在网站上完成同样的事情。理想情况下,我希望将其作为虚拟目录包含到,并作为访问它,但这样做我运气不佳 我曾尝试

我们有一个已经对外公开的公共网站,尽管实际上什么都没有。只需使用包含“即将到来”文本的default.htm文件即可。()

我们还准备了一个WebAPI,我们想添加到这个网站上。当我在本地发布到IIS6时,它不会有问题。一切都很好。我使用了PostMan、C#客户端和Javascript AJAX来访问它。我还可以将它加载到该URL的浏览器中,并获得相应的默认控制器和操作

然而,我完全无法在网站上完成同样的事情。理想情况下,我希望将其作为虚拟目录包含到,并作为访问它,但这样做我运气不佳

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

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


关于我可以尝试什么,有什么想法或建议吗?我不确定这里还能包括什么。IIS没什么特别的,服务也没什么特别的。里面只有3个动作。正如我所说,在本地主机下,它在本地运行得非常好。

IIS7没有内置的对无扩展URL的支持,这会让MVC和Web API应用程序运行起来非常麻烦。我已经用这两个选项让它工作了。选择一个适合你的

  • 安装允许IIS 7处理无扩展URL的

  • 如果由于担心破坏服务器上的其他站点而无法选择该修补程序,则可以在中进行Web.config调整。对于服务器上运行的每个MVC/WebAPI应用程序,您都必须这样做


  • 所以我学到了一些可能有用的东西。本地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,它不工作;不行。这一切都归结为IIS版本的差异,即版本7和7.5之间的差异。我已经让它工作了,但是我必须在两个系统之间缓慢地修改我的web.config以使其工作。这就是我所做的,以及从web.config中注释掉httpRuntime和编译标记。这些允许我的网站工作。我很好奇,但是评论这些标签的后果是什么。。。