繁体   English   中英

使用RouteAttribute和IIS应用程序会出现404错误

[英]Using RouteAttribute and IIS Application gives 404 error

我已经创建了一个webAPI项目,并且想开始在IIS中托管它。

控制器中的方法如下所示:

    [TokenAuthentication]
    [HttpGet]
    [Authorize(Roles=Roles.PING)]
    [Route("~/Ping")]
    public DateTime Ping()
    {
        return DateTime.UtcNow;

    }

我的WebApiConfig看起来像这样:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        var cors = new EnableCorsAttribute("*", "*", "*");
        config.EnableCors(cors);
        config.MapHttpAttributeRoutes();
        GlobalConfiguration.Configuration.Filters.Add(new ValidateModelAttribute());
        //config.Routes.MapHttpRoute(
        //    name: "DefaultApi",
        //    routeTemplate: "{controller}/{id}",
        //    defaults: new { id = RouteParameter.Optional }
        //);
    }
}

当我通过Visual Studio运行该项目,并转到链接http:// localhost:53722 / ping时,我得到了我所期望的未经授权的响应。

当我将网站放在带有虚拟路径“ / Account”的应用程序中的IIS上时,我收到404响应,它正在尝试使用StaticFile处理程序。

通过在线搜索,我将runAllManagedModulesForAllRequests设置为true。 我还发现将ASP.NET Web API应用程序配置为ASP.NET MVC应用程序下的虚拟目录 ,似乎“ / Account /”不应干扰路由。

我无法将API放在路由目录中,因为我将在同一站点下运行多个微服务。

我将如何使用虚拟目录来工作?

谢谢,史蒂文

每个站点都应作为应用程序而不是虚拟目录运行(理想情况下,每个站点都有自己的应用程序池)。

开箱即用

 [Route("ping")]

这将为您提供一个http://blah.com/ping的url如果您在子文件夹/应用程序中运行此api,则可能类似于http://blah.com/subapp/ping

这就是我所拥有的...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM