为什么将Web API部署到IIS后返回404错误

3

Windows Server 2012 R2、IIS、VS2013。

我已经实现了一个ASP.NET Web API,在VS2013中进行调试时,可以打开IE,并且可以正确调用我的Web API:http://localhost:42508/api/log/111

我使用了VS2013中的“发布”功能,并将所有文件部署到D:\api_publish

现在,我设置了IIS,在“默认网站”下添加了一个应用程序“serverapi”。现在我将“物理路径”设置为D:\api_publish\bin(其中包含serverapi.dll)。然后我使用下面的URL来访问API:http://192.168.1.100/serverapi/api/log/111

但是它返回了404-文件或目录未找到

更新:

我将“默认网站”设置为另一个文件夹路径,并将应用程序“物理路径”设置为D:\api_publish\。现在当我访问http://192.168.1.100/serverapi/api/log/111时,它会返回HTTP 500错误。


3
物理路径应该放在bin文件夹的上一级。 - DavidG
1
由于我的“默认网站”已经指向D:\ api_publish,如果我将应用程序serverapi设置为D:\ api_publish,则会发生冲突。那么我该怎么办? - Jerry YY Rain
现在,我已将“默认网站”修改为另一个文件夹,并将应用程序设置为D:\api_publish。当我使用http://192.168.1.100/api/log/111或http://192.168.1.100/serverapi/api/log/111时,它们都返回HTTP 500。 - Jerry YY Rain
在服务器上打开该URL,您应该会得到更好的错误信息,但现在看起来它正在工作。 - DavidG
在服务器上,它也返回500,并且没有任何其他错误消息,我不知道如何进行进一步分析。 - Jerry YY Rain
显示剩余7条评论
2个回答

4
这里有几个问题需要注意:
  1. 物理路径应该设置为 D:\api_publish,而不是在 bin 文件夹中。
  2. 检查应用程序池是否设置为使用 .NET CLR 版本 v4
正如您在评论中提到的, 默认网站已经指向相同的物理文件夹。您可以选择:
  1. 将默认网站移动到另一个路径。
  2. 使用默认网站,而不是您创建的 serverapi 网站。

0

您应该使用 D:\api_publish 作为物理路径。不能使用 Bin 文件夹。


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