我有一个在v4.0集成模式下运行的asp.net web forms应用程序。
我尝试在App_Code文件夹中添加一个apicontroller。
在Global.asax中,我添加了以下代码
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
当我试图导航到http://localhost/api/Value
的控制器时,我得到了404错误。
在处理程序部分中配置无扩展url。我已经为网站启用了表单和匿名身份验证。
ExtensionLess url配置为‘*’
当我点击控制器的url时,请求由StaticHandler处理,而不是由ExtensionlessUrlHandler-Integrated-4.0处理。
我现在不知道为什么系统会抛出错误,如下图所示。
发布于 2014-10-03 09:19:17
我正在经历这个问题。
我尝试编辑我的WebApiConfig.cs
,以满足这里的一些建议和其他地方的代码示例。有些工作了,但它没有解释为什么当WebApiConfig.cs
完全按照MS模板WebApi项目编码时,路由不能工作。
我的实际问题是,在手动将WebApi
添加到项目中时,我没有遵循来自Global.asax
的配置调用的常用顺序
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
// This is where it "should" be
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
// The WebApi routes cannot be initialized here.
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
我可以猜测为什么会这样,但我没有进一步调查。至少可以说,这是不直观的。
发布于 2013-12-31 05:01:19
问题出在您的路由配置中。Mvc
路由不同于WebApi
路由。
添加对System.Web.Http.dll
、System.Web.Http.Webhost.dll
、System.Net.Http.dll
的引用,配置您的接口路由,如下所示:
GlobalConfiguration.Configuration.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
发布于 2014-01-02 02:10:20
请确保以下事项
1.)如果您的web api是4.5,请确保已使用.NET 4.5或4.0配置了IIS。在IIS中安装4.5
使用管理员权限在命令提示符下运行此命令
C:\Windows\Microsoft.NET\Framework\v4.0.30319>aspnet_regiis.exe -i
2.)将您的路由更改为
RouteTable.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = System.Web.Http.RouteParameter.Optional }
);
并使用Demo/Get发出请求(其中demo是您的控制器名称)
如果%1、%2不工作,请尝试%3
3.)在web.config文件中添加以下配置
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
https://stackoverflow.com/questions/20621825
复制相似问题