asp.net - ASP.NET 会捕获 WebRole 类中抛出的异常吗?

标签 asp.net asp.net-mvc azure

我想我在某处读到,WebRole 运行在与 Windows Azure 上的 IIS 不同的进程中,从而可以组合 Web 角色和辅助角色 http://things.smarx.com/#Combine%20Web%20and%20Worker%20Roles

假设以下通用代码:

public class WebRole : RoleEntryPoint
{
    public override void Run()
    {
         ... Exception gets thrown here.
    }
}

这是否需要单独的异常处理方法? Run 与 OnStart 是否不同,意味着某些服务已启动? 有什么最佳实践吗?

最佳答案

问题的标题和内嵌问题不同 - 您最关心哪一个?

1.3+ SDK 中的 WebRole 可以运行完整的 IIS,它运行在与 RoleEntryPoint 不同的进程下。这意味着出于异常处理目的,RoleEntryPoint 和 IIS Web 应用程序是完全隔离的。您需要在每个错误中进行显式错误处理,因为其中一个错误处理不适用于另一个错误处理。

您问的另一个问题与 Run 与 OnStart 有关。 OnStart 方法在您的实例连接到 LoadBalancer 之前调用。这是您在活跃流量到达之前用您需要做的任何事情引导角色的机会。您必须返回 true 并且不能在 OnStart 中抛出错误,否则您将永远不会获得事件实例。有些人使用 OnStart 以编程方式创建他们需要的 IIS 内容(站点、应用程序、虚拟目录等)。 Run 方法是主工作逻辑的入口点。它就像 static void Main() (但你永远不会退出)。

事实上,Web 角色和辅助角色几乎相同,唯一的异常(exception)是 Web 角色现在有一些很好的声明性语法来为您设置 IIS。使用 RoleEntryPoint 时,在辅助角色中运行的所有其他注意事项都适用于 Web 角色。

关于asp.net - ASP.NET 会捕获 WebRole 类中抛出的异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5934093/

相关文章:

c# - WebAPI OData 日期时间序列化

asp.net-mvc - 如何在没有互联网的情况下在构建服务器/生产服务器上使用 NuGet 包?

asp.net - 为什么我不能通过 nuget 安装 Microsoft.VisualStudio.Web.CodeGeneration.Tools 2.0.1? Asp.NET 核心 2.0.1

asp.net web 应用程序项目模板 成员(member)资格

c# - 从 UI 层抽象 asp.net mvc 标识

c# - 如何将列表从 View 传递到 Controller ASP.NET MVC5

azure - 限制对暂存和开发插槽的访问

python - 在 Windows Azure 上配置 Python 3.4 和 Django

php - Azure PHP SDK 抛出致命异常并出现套接字错误

c# - 在项目之间共享 Assets