Web表单中的ASP.NET Web Api

seb*_*ipo 6 c# asp.net iis-7.5 asp.net-web-api

我正在尝试使用Visual Studio 2010(sp1)在WEB FORMS中使用asp.net web api我已经完成了这个步骤http://myrandomykien.blogspot.com/2012/02/simplest-web-api-site-with -nuget.html

当我使用visual studio开发服务器时它可以工作,但是当我使用iis 7.5时,我得到一个错误HTTP 404.0 - 未找到.

编辑

这是我的Global-asax

protected void Application_Start(object sender, EventArgs e)
        {
            RouteTable.Routes.MapHttpRoute(
              name: "DefaultApi",
              routeTemplate: "api/{controller}/{id}",
              defaults: new { id = System.Web.Http.RouteParameter.Optional }
            );
        }
Run Code Online (Sandbox Code Playgroud)

这是api类

public class GreetingController : ApiController
{
    public string GetGreeting(string id)
    {
        return String.Format("Hello {0}", id);
    }
}
Run Code Online (Sandbox Code Playgroud)

Wik*_*hla 6

您必须确保将无扩展请求路由到ASP.NET,这是由开发服务器默认完成的,而不是IIS.

有几种可能的方法.

首先,您可以添加runAllManagedModulesForAllRequests="true"模块部分system.webServer.有些人声称有更好的方法,你可以遵循它们:

http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html

  • 如果某人在经典模式下使用iis,则Wiktor的解决方案不起作用,您必须为iis安装extensionLess更新.http://support.microsoft.com/kb/980368 (3认同)