【发布时间】:2015-08-03 14:11:06
【问题描述】:
我有以下代码,其中我的控制器名称是客户,它是我的 web api 2 项目中客户目录的一部分。似乎 IIS 不允许我使用相同的目录名称和控制器名称,因为它会为 get 调用 (https://hostname:443/myapp/customers) 引发错误 403。我认为在部署代码后这不会成为问题,但是为了在我的本地机器上进行调试,我怎样才能让它在我的本地机器上工作?
[RoutePrefix(RoutePrefix)]
public class CustomersController : ApiController
{
const string RoutePrefix = @"customers";
private readonly ICustomersData _customersData;
public CustomersController(ICustomersData customersData
{
_customersData = customersData
}
/// <summary>
/// Get Customers
/// </summary>
/// <returns>Customers</returns>
[ResponseType(typeof(Customer[]))]
[HttpGet, Route("")]
public IHttpActionResult GetCustomers()
{
var customers = _customersData.GetCustomers();
return Ok(customers);
}
}
【问题讨论】:
-
客户文件夹使用不同的名称怎么样?
-
这段代码有一些奇怪的东西。构造函数没有右括号。该构造函数中的一个语句有一个“;=”。那是什么?我不认识它。这甚至是如何编译的?
-
什么时候出现这个错误?尝试访问其中一种 API 方法?
-
@DavidG 这很容易解决,但正如我所说,当我部署代码时这不会出现问题,但仅在本地 IIS 中点击目录名称而不是控制器,所以我不想使用不同的名称.
-
@seUser 路由系统始终假定现有文件和文件夹将优先于路由 URL 使用。您可以尝试在路由配置中指定
routes.RouteExistingFiles = true;。
标签: c# asp.net-mvc iis-7.5 .net-4.5 asp.net-web-api2