c# - Web Api Controller 路由随机停止工作

标签 c# asp.net asp.net-web-api2 asp.net-routing

我有一个名为 MediaController 的 ApiController,其路由通过 [Route] 属性映射到方法。例如:

[Route("v1/libraries/{libraryKey}/media"), HttpGet]
public ResponseObj Index(string libraryKey) 
{
    ...
}

这些路由通过 config.MapHttpAttributeRoutes();

在我的 WebApiConfig.cs 中注册

我遇到的问题是这个特定 Controller 的路由(所有其他 Controller 都很好并且不受影响)有时会随机停止一起工作,并且尝试转到一个会触发错误并显示以下消息

{
    "message": "No HTTP resource was found that matches the request URI 'http://localhost:8100/v1/libraries/libraryKey/media'.",
    "messageDetail": "No route data was found for this request."
}

我发现(暂时)解决此问题的唯一方法是从我的计算机中完全删除该项目的 git 存储库,然后重新下载它。我不知道为什么会这样,因为删除前后的文件没有明显差异。

最佳答案

设法找出造成这种情况的原因。我们在项目的 bin 目录中有一个流氓 .dll 文件(它被 git 忽略,因此为什么它看起来没有文件差异并且删除整个 repo 作为临时修复)被一个单独的项目引用,它在turn 被主项目引用。

此 .dll 包含一个具有相同名称 (MediaController) 的 Controller ,但路由不同,因此某些未知情况会导致该 Controller 的路由注册到预期主项目的 位置MediaController 路由。

关于c# - Web Api Controller 路由随机停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32867921/

相关文章:

C# MYSQL 在另一个 DataTable 中找到 DataTable.PrimaryKey?

c# - 在 ASHX AJAX C# 中获取 JSON

c# - 在现有 ASP.NET WebForms 站点中添加具有根路径的第二语言支持

c# - 是否可以针对多个身份验证提供程序来保护 ASP.NET Web API 2 应用程序的安全?

c# - Linq 表达式中的条件运算符导致 NHibernate 异常

c# - 从谷歌浏览器打开 Internet Explorer

.net - DataGrid 控件已禁用

c# - ASP.Net MVC 如何生成日期列表

c# - 删除和选项请求得到 401 未经授权的响应

c# - WebApi2 IHttpActionResult 强类型返回值