此控制器不会显示在Azure上的Web Api中

时间:2012-11-24 05:31:28

标签: azure asp.net-mvc-4 asp.net-web-api azure-web-roles

namespace StorageRoleMVC4.Controllers
{
    public class SearchController : ApiController
    {
        public Dictionary<string, string> Get([FromUri] string searchString, [FromUri] string searchObject)
        {
            var searchHelper = new SearchStorageHelper();
            var objectList = searchHelper.Retrieve(searchString, searchObject);

            return objectList;
        }
    }
}

有没有关于此控制器的任何信息,一旦部署(Azure网络角色),它就无法访问?我尝试触及它时遇到404错误。它在本地模拟器上运行良好。

我已经部署了我的项目的最后2次,我的Web服务中的所有控制器都返回了404个错误几个小时,直到项目似乎自行修复。我不确定为什么,但它可能是相关的。

UPDATE 发布后,Web角色VM上的事件日志中存在警告: 属于站点'1273337584'的应用程序'/'具有无效的AppPoolId'ea7a2e15-9390-49e1-a16b-67ff1cdb7dcb'集。因此,应用程序将被忽略。

这是我网站的ID,但AppPoolId不正确。更改应用程序池会将404转换为502.

此外,发布后,万维网发布服务已关闭。当我打开它并执行IIS重置时,重置后它再次关闭。

当我重新启动Web角色VM时,大多数控制器再次工作,并且打开了World Wide Web Publishing服务。但是,这个SearchController仍然不起作用。或者自从这个问题开始发生以来我创建的任何其他新控制器。

1 个答案:

答案 0 :(得分:1)

好吧,经过大量不成功的故障排除后,我只是回滚到早期版本的代码,发现它在部署时没有读取Web服务。所以我重新开始使用该版本并重新构建了delta。

这包括删除一些web.config条目并删除一些库,创建一些类并在global.asax中引用它们(我认为它就是这样)以覆盖te Authorize属性...

如果有人有更好的答案,我会将答案换成您发布的内容。