Web 表单中的 ASP.NET Web Api

Posted

技术标签:

【中文标题】Web 表单中的 ASP.NET Web Api【英文标题】:ASP.NET Web Api in Web forms 【发布时间】:2012-03-21 03:17:34 【问题描述】:

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

当我使用 Visual Studio 开发服务器时它可以工作,但是当我使用 iis 7.5 时,我收到错误 HTTP 404.0 - Not Found。

编辑

这是我的 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 
            );
        

这是api类

public class GreetingController : ApiController

    public string GetGreeting(string id)
    
        return String.Format("Hello 0", id);
    

【问题讨论】:

您能提供更多信息吗?现在没什么可做的。 【参考方案1】:

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

有几种可能的方法。

首先,您可以在system.webServer 的模块部分添加runAllManagedModulesForAllRequests="true"。有人声称有更好的方法,你可以关注他们:

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

【讨论】:

如果有人在经典模式下使用 iis,Wiktor 的解决方案不起作用,您必须为 iis 安装 extensionLess 更新。 support.microsoft.com/kb/980368

以上是关于Web 表单中的 ASP.NET Web Api的主要内容,如果未能解决你的问题,请参考以下文章

从 ASP.NET MVC Web API 中的多个表单数据键接收文件

试图将两个runat = server表单放在一个web表单asp.net中

用于用户管理的 ASP.NET Web 表单应用程序中的 Advantage Database Server (10.1)

防止 asp.net Web 表单中的跨站点请求伪造 (csrf) 攻击

使用ajax调用asp.net web表单代码

使用线程 asp.net web 表单按钮单击会话到期后