我正在尝试将ASP .NET MVC4应用程序部署到Windows Azure,我有一个安装启动任务 MVC4。但是我的角色没有上线,部署状态是:
Wating for Role启动...系统启动任务正在运行
已部署网站......
...恢复
Wating for Role启动...系统启动任务正在运行
已部署网站......
...恢复
Wating for Role启动...系统启动任务正在运行
已部署网站......
...恢复
这是不断发生的。
我注意到的另一个有趣的事情是,如果我进入角色实例,那么角色就会变成就绪状态。
任何人都有想法,这里出了什么问题?
由于 ANU
答案 0 :(得分:2)
正如Sandrino所说,启动任务可能会导致这种情况。每当我看到这种模式时,似乎大部分时间我都会在我部署的Azure VM上引用程序集。
有一个工具:http://gacviewer.cloudapp.net/,它将csproj文件中的程序集与当前的Azure OS版本进行比较,以找到需要标记为CopyLocal = true的任何程序集。请注意,此工具正在查看osfamily = 2。 VS默认在cscfg文件中创建osfamily = 1。
这似乎很有可能,因为您正在部署一个MVC 4项目,可能是一个不在Azure VM上的EntityFramework版本。
答案 1 :(得分:0)
这可能是由导致问题的启动任务或Web应用程序无法正常运行引起的。由于诊断模块可能需要几分钟才能将日志发送到您的存储帐户,因此我建议您通过RDP连接并查看事件查看器(在应用程序下)以查看发生的情况(查找错误和警告)。
答案 2 :(得分:0)
我得到了解决方案,问题是运行启动任务以安装MVC4的用户(我认为它的'系统')的许可。我已经更新了我的启动脚本(installmvc4-main.cmd)来执行以下操作:
创建另一个脚本'installmvc4-impl.cmd',该脚本调用一个电源shell脚本'installmvc4.ps1',执行策略设置为不受限制。
创建一个powershell脚本'installmvc4.ps1',使用软件包中包含的安装程序安装mvc4(我是从http://www.microsoft.com/en-us/download/details.aspx?id=30683下载的)
创建用户,将其添加到管理员组并安排任务以使用此用户运行“installmvc4-impl.cmd”。
这里的脚本'installmvc4-main.cmd':
REM Create dos script installmvc4-impl.cmd to invoke the powershell script to install MVC4 echo if "%%EMULATED%%"=="true" goto :EOF > %~dp0installmvc4-impl.cmd echo powershell -ExecutionPolicy Unrestricted %~dp0installmvc4.ps1 ^> installmvc4.ps1.log 2^>^&1 >> %~dp0\installmvc4-impl.cmd echo exit ^/B 0 >> %~dp0installmvc4-impl.cmd REM Create the powershell script installmvc4.ps1 to install MVC4 echo Invoke-Expression "%~dp0AspNetMVC4Setup.exe /q /norestart" > %~dp0installmvc4.ps1 REM Create an admin user and schedule task using this user to run the script that install MVC4 net user anuchandy Admin!@#123 /add net localgroup Administrators aunchandy /add schtasks /CREATE /TN "install-mvc4-task" /SC ONCE /SD 01/01/2020 /ST 00:00:00 /RL HIGHEST /RU anuchandy /RP Admin!@#123 /TR "%~dp0\installmvc4-impl.cmd" /F schtasks /RUN /TN "install-mvc4-task"
注意:确保srartup任务installmvc4-main.cmd的字符编码为ANSI。
答案 3 :(得分:0)
您的启动脚本文件最后应该有EXIT / B 0命令。