2

我有一个 .NET 4.0“Web 应用程序”又名“Web 表单”。在这个应用程序中,我有一个“Web API 控制器类”和我的“Global.asax”

在 Global.asax 中,我的“Application_Start”方法中有以下代码。

var config = GlobalConfiguration.Configuration;

config.Routes.MapHttpRoute(
name: "DefaultApi"
, routeTemplate: "api/{controller}/{id}"
, defaults: new { id = System.Web.Http.RouteParameter.Optional });

当我启动本地调试会话时,我可以很好地使用我的路由。如果我输入“/api/ZipCodes”,我会得到预期的 JSON 响应。

当我将项目发布到我的远程 IIS 服务器(发布方法:文件系统)时,路由不再有效。我收到 404 错误。

我假设我需要在 IIS 上启用一个设置或某些东西,以便它识别和使用路由。

  • IIS 版本 7.0.6000.16386
  • .NET 应用程序池 4.0 版

  • 我的网站与其他 7 个以上的网站都位于“C:\inetpub\hosts”中。没有人使用路由。

  • 我有一个带有“Hello World”的 Default.aspx,我可以在远程 IIS 服务器和本地调试会话上正确访问它。
  • 当我在本地机器上调试时,我可以输入“http://localhost:6358/api/ZipCodes”并获得我的 JSON 响应。如果我在远程机器“http://remoteserver.com/api/ZipCodes”上输入相同的 url,它会给我一个 404。

有人知道吗?

4

2 回答 2

0

您的主文件夹设置正确吗?因为这就是今天发生在我身上的事。它应该指向应用程序的根文件夹,而不是服务器的根目录。

编辑:你能给我们你发布你的应用程序的文件夹吗?

此外,如果您想知道如何设置“主文件夹”(向服务器发出请求时服务器指向的文件夹,即:www.yoursite.com),请查看此链接: https ://www.microsoft .com/technet/prodtechnol/WindowsServer2003/Library/IIS/a59a2665-9078-43ef-8b5a-5bf9bcacc95e.mspx?mfr=true

总结一下:

您必须将“主文件夹”设置为指向应用程序的文件夹,或将应用程序文件放入预设文件夹(认为它的名称如下: LocalDrive:\Inetpub\Wwwroot

于 2012-11-28T19:31:03.767 回答
0

如果您的 IIS 是最新的(我假设是 7.0 或更高版本),并且应用程序池配置为用户框架 4.0,则应该可以使用任何其他操作或配置。

于 2012-11-28T19:39:01.097 回答