public static class ServerStartup { private static IDisposable selfHost; public static void ServerStart() { if (selfHost == null) { var port = 8010; StartOptions options = new StartOptions(); options.Urls.Add("http://localhost:" + port); selfHost = WebApp.Start<Startup>(options); } } public static void Shutdown() { if(selfHost == null) { selfHost.Dispose(); selfHost = null; } } }这段代码是否有问题?
时间: 2023-12-10 07:42:46 浏览: 28
此代码有两个问题:
1. 在 `Shutdown()` 方法中,应该判断 `selfHost` 不为 `null` 才进行关闭操作,否则可能会出现 `ObjectDisposedException` 异常。
2. 在 `ServerStart()` 方法中,如果 `selfHost` 已经不为 `null`,则不应该再次启动。否则,会抛出 `HttpListenerException: Access is denied` 异常。
下面是修改后的代码:
```
public static class ServerStartup
{
private static IDisposable selfHost;
public static void ServerStart()
{
if (selfHost == null)
{
var port = 8010;
StartOptions options = new StartOptions();
options.Urls.Add("http://localhost:" + port);
selfHost = WebApp.Start<Startup>(options);
}
}
public static void Shutdown()
{
if (selfHost != null)
{
selfHost.Dispose();
selfHost = null;
}
}
}
```