Web Api 控制器路由随机停止工作
Web Api Controller Routes Randomly Stop Working
我有一个名为 MediaController 的 ApiController,其路由通过 [Route] 属性映射到方法。例如:
[Route("v1/libraries/{libraryKey}/media"), HttpGet]
public ResponseObj Index(string libraryKey)
{
...
}
这些路线是通过config.MapHttpAttributeRoutes();
在我的WebApiConfig.cs中注册的
我 运行 遇到的问题是这个特定控制器的路由(所有其他控制器都很好并且不受影响)有时会随机停止一起工作,并且尝试转到一个会触发错误以下消息
{
"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 作为临时修复)被单独引用project,它又被主项目引用。
此 .dll 包含一个具有相同名称 (MediaController
) 的控制器,但路由不同,因此某些未知情况会导致该控制器的路由代替预期主项目的 MediaController
路线。
我有一个名为 MediaController 的 ApiController,其路由通过 [Route] 属性映射到方法。例如:
[Route("v1/libraries/{libraryKey}/media"), HttpGet]
public ResponseObj Index(string libraryKey)
{
...
}
这些路线是通过config.MapHttpAttributeRoutes();
我 运行 遇到的问题是这个特定控制器的路由(所有其他控制器都很好并且不受影响)有时会随机停止一起工作,并且尝试转到一个会触发错误以下消息
{
"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 作为临时修复)被单独引用project,它又被主项目引用。
此 .dll 包含一个具有相同名称 (MediaController
) 的控制器,但路由不同,因此某些未知情况会导致该控制器的路由代替预期主项目的 MediaController
路线。