0

我创建了一个简单的 Web 应用程序,该应用程序在本地运行,并使用了我使用Alchemy Web Sockets实现的简单 Web 套接字服务器。现在我需要将此应用程序部署到 Windows Azure。

目前,该解决方案由一个 MVC4 网站和一个用于 Web 套接字服务器的控制台应用程序组成。我的问题是如何将我当前的解决方案部署到 Windows Azure?甚至可以将 Azure 用于控制台应用程序吗?

根据我在 Azure 网站上看到的内容,我可以将 MVC4 网站部署为 Azure 网站,并将控制台应用程序(服务器)部署在虚拟机或云服务上。在我看来,云服务更有意义(因为基础设施由微软管理,我对此不感兴趣),但我对这些技术完全陌生,所以我不确定哪种方法是最好的/如果是甚至可能。

编辑:

我已经按照 Sandrino 的建议将 Web 套接字服务器控制台应用程序作为 Web 角色的一部分来实现。但是,在加载连接到服务器的页面时,我在 chrome 调试器中收到以下错误Unexpected response code: 200

除了我@HttpContext.Current.Request.ServerVariables["HTTP_HOST"]用来连接到客户端的服务器之外,我将所有内容都保持不变,因为 Azure 中将使用不同的服务器,我已经在本地应用程序中尝试过它并且它有效。我还没有部署到 Azure 但正在本地测试,可能服务器实际上并没有运行,我该如何检查?使用断点似乎正在输入启动服务器的必要方法。

4

1 回答 1

0

我建议您从控制台应用程序中获取代码并将其移动到云服务的 WebRole.cs。此文件是您的实例的入口点,这意味着您的代码将在实例启动时运行。这将允许您以相同的角色与您的 ASP.NET MVC 应用程序一起运行 WebSocket 服务器。

因此,在 Visual Studio 中,您需要创建一个新的云服务并选择一个 MVC4 Web 角色。

public class WebRole : RoleEntryPoint
{
    public override bool OnStart()
    {
        Task.Factory.StartNew(OnStartWebSocketServer, TaskCreationOptions.LongRunning);
        return base.OnStart();
    }

    private void OnStartWebSocketServer()
    {
        var aServer = new WebSocketServer(81, IPAddress.Any)
        {
            OnReceive = OnReceive,
            OnSend = OnSend,
            OnConnect = OnConnect,
            OnConnected = OnConnected,
            OnDisconnect = OnDisconnect,
            TimeOut = new TimeSpan(0, 5, 0)
        };
        aServer.Start();
    }
}
于 2013-02-13T09:37:53.463 回答