使用WebRole.cs
配置IIS时,建议您调用base.OnStart()
的方式是什么?
public class WebRole : Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint
{
public override bool OnStart()
{
RunMyCode();
return base.OnStart();
}
}
或
public class WebRole : Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint
{
public override bool OnStart()
{
var result = base.OnStart();
if (result == true) { RunMyCode(); }
return result;
}
}
换句话说,“考虑基类的返回值是否有意义?”。
我(我认为)有经验的行为,有时基本函数必须返回false
并且我的代码从未被调用过。
答案 0 :(得分:4)
根据official documentation,,对base.OnStart
的调用是该方法的最后一个陈述。
这些方法与API一样提供。 RoleEntryPoint是一个具有默认单行实现的抽象类(或根本没有实现)。同样根据same documentation,您将看到如果您返回False,您的角色实例将被停止(从而导致角色回收并且无法启动)。最后每篇文章:
通常,您应该避免从OnStart方法返回false。
如果您在RoleEntryPoint的源代码中查看(使用您选择的.NET反编译器),您会发现OnStart的默认实现只返回true:
using System.Threading;
namespace Microsoft.WindowsAzure.ServiceRuntime
{
public abstract class RoleEntryPoint
{
public virtual bool OnStart()
{
return true;
}
public virtual void Run()
{
Thread.Sleep(-1);
}
public virtual void OnStop()
{
}
}
}
与SDK的v.2.4一起使用。从早期的1.xx版开始就一直如此。