我创建了一个在本地运行的简单Web应用程序,并使用了我使用Alchemy Web Sockets实现的简单Web套接字服务器。现在我需要将此应用程序部署到Windows Azure。
目前,该解决方案由MVC4网站和Web套接字服务器的控制台应用程序组成。我的问题是如何将我当前的解决方案部署到Windows Azure?甚至可以将Azure用作控制台应用程序吗?
根据我在Azure网站上看到的内容,我可以将MVC4网站部署为Azure网站,并将控制台应用程序(服务器)部署在虚拟机或云服务上。在我看来,云服务更有意义(因为基础设施由微软管理,我对此不感兴趣),但我对这些技术完全陌生,所以我不确定哪种方法最好/如果是甚至可能。
修改
我已经将Web套接字服务器控制台应用程序实现为Sandrino建议的Web角色的一部分。但是,在加载连接到服务器的页面时,我在chrome调试器Unexpected response code: 200
中收到以下错误。
除了我使用@HttpContext.Current.Request.ServerVariables["HTTP_HOST"]
连接到客户端服务器之外,我已经保留了相同的一切,因为Azure中将使用不同的服务器,我在本地应用程序中尝试了这一点并且它有效。我还没有部署到Azure但我在本地测试,也许服务器实际上没有运行,我该如何检查?使用断点似乎正在输入启动服务器的必要方法。
答案 0 :(得分:0)
我建议您从控制台应用程序中获取代码并将其移至Cloud Service的WebRole.cs。此文件是您的实例的入口点,这意味着您的代码将在实例启动时运行。这将允许您以相同的角色与ASP.NET MVC应用程序一起运行WebSocket服务器。
因此,在Visual Studio中,您需要创建一个新的Cloud Service并选择一个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();
}
}