【发布时间】:2012-11-12 09:05:30
【问题描述】:
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 Web 角色)?当我尝试访问它时,我只是收到一个 404 错误。它在本地模拟器上运行良好。
最近 2 次我部署了我的项目,我的 Web 服务中的所有控制器在几个小时内都返回了 404 错误,直到项目似乎自行修复。我不知道为什么,但它可能是相关的。
更新 发布后,Web 角色 VM 上的事件日志中有一条警告: 属于站点“1273337584”的应用程序“/”设置了无效的 AppPoolId“ea7a2e15-9390-49e1-a16b-67ff1cdb7dcb”。因此,应用程序将被忽略。
这是我网站的 ID,但 AppPoolId 不正确。更改应用程序池会将 404 变为 502。
此外,发布后,万维网发布服务将关闭。当我打开它并进行 IIS 重置时,重置后它再次关闭。
当我重新启动 Web 角色 VM 时,大多数控制器再次工作,并且万维网发布服务已打开。但是,这个 SearchController 仍然不起作用。或者自从这个问题开始发生以来我创建的任何其他新控制器。
【问题讨论】:
-
您在这个项目中是否有任何大的依赖项(Windows Identity Foundation 需要安装等)?我的一个解决方案有多种服务,部署后确实需要几分钟或更长时间才能启动。但是,花费几个小时是不正常的。您是否在部署解决方案后立即尝试 RDP 并检查您拥有的任何日志记录或在本地点击页面(自定义错误关闭)?
-
嗨,巴特,我不这么认为。这似乎是在我实现简单的 http 身份验证后立即开始发生的,但我发布了它,然后进行了测试,一切似乎都正常,然后上床睡觉,第二天早上它就坏了。现在,一周后,我再次发布并破坏了控制器。似乎重新启动实例可以修复其他控制器,但我在上面发布的这个根本不起作用 - 只是返回 404。
-
您是否尝试过使用 fiddler 进行分析? ...比较请求和响应标头?有时,如果它们不正确,它们将无法工作。您是否使用 API 部署了 ELMAH 模块以确保一切正常?
-
是的,我所有的测试都是用 Fiddler 进行的。我发布了,所有控制器都返回 404。我重新启动了 Web 角色实例,它们是固定的,除了这个。我所做的只是在作曲家中更改 URL 中的参数。标题是相同的。我什至创建了一个新的控制器并部署它只是为了看看发生了什么,那个也是 404。这几乎就像我刚刚达到了我可以拥有多少控制器或其他东西的极限......任何新的控制器都会执行 404。
-
另外,我从未听说过 ELMAH - 我会调查一下。我在网络角色 VM 上发现了一个错误 - 我正在用它更新原始帖子。
标签: azure asp.net-mvc-4 asp.net-web-api azure-web-roles