【发布时间】:2016-12-05 15:26:27
【问题描述】:
我创建了一个 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 响应,它正在尝试使用静态文件处理程序。
通过在线搜索,我将 runAllManagedModulesForAllRequests 设置为 true。我还发现Configure ASP.NET Web API application as a Virtual Directory under ASP.NET MVC application 似乎“/Account/”不应该干扰路由。
我不能将 API 放在路由目录,因为我将在同一个站点下运行多个微服务。
如何使用虚拟目录获得工作路径?
谢谢, 史蒂文
【问题讨论】:
标签: c# iis asp.net-web-api asp.net-mvc-routing