发布后路由不起作用

时间:2012-11-28 19:15:23

标签: c# asp.net .net

我有一个.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

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

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

有人有任何想法吗?

2 个答案:

答案 0 :(得分:0)

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

编辑:你能给我们你发布申请的文件夹吗?

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

总结:

您必须设置“主文件夹”以指向应用程序的文件夹,或将应用程序文件设置为< strong>预设文件夹(认为它的名字是这样的: LocalDrive:\ Inetpub \ Wwwroot

答案 1 :(得分:0)

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