.net Azure WebRole MVC4安装问题

.net Azure WebRole MVC4安装问题,.net,azure,asp.net-mvc-4,.net,Azure,Asp.net Mvc 4,我正在尝试将ASP.NETMVC4应用程序部署到WindowsAzure,我有一个安装的启动任务 MVC4。但我的角色未联机,部署状态为: 正在等待角色启动…系统启动任务正在运行 已部署站点 恢复 正在等待角色启动…系统启动任务正在运行 已部署站点 恢复 正在等待角色启动…系统启动任务正在运行 已部署站点 恢复 这是不断发生的 我注意到的另一件有趣的事情是,如果我将RDP添加到角色实例中,那么角色将变为就绪状态 谁有主意,这里出了什么问题 谢谢 Anu这可能是由导致问题的启动任务引起的,也可能是

我正在尝试将ASP.NETMVC4应用程序部署到WindowsAzure,我有一个安装的启动任务 MVC4。但我的角色未联机,部署状态为:

正在等待角色启动…系统启动任务正在运行

已部署站点

恢复

正在等待角色启动…系统启动任务正在运行

已部署站点

恢复

正在等待角色启动…系统启动任务正在运行

已部署站点

恢复

这是不断发生的

我注意到的另一件有趣的事情是,如果我将RDP添加到角色实例中,那么角色将变为就绪状态

谁有主意,这里出了什么问题

谢谢
Anu

这可能是由导致问题的启动任务引起的,也可能是由于您的web应用程序工作不正常。由于诊断模块可能需要几分钟时间将日志发送到您的存储帐户,我建议您通过RDP连接,并查看事件查看器(在应用程序下)中发生的情况(查找错误和警告)。

正如Sandrino提到的,启动任务可能会导致此问题。每当我看到这种模式时,似乎大多数时候我都引用了部署到的Azure VM上的程序集

有一个工具:它将比较csproj文件中的程序集与当前Azure OS版本,以找到需要标记为CopyLocal=true的任何程序集。请注意,此工具正在查看osfamily=2。VS默认为在cscfg文件中创建osfamily=1


这在我看来很有可能,因为您部署的MVC 4项目可能使用的EntityFramework版本不在Azure VM上。

我得到了解决方案,问题是运行启动任务的用户(我认为其“系统”)是否允许安装MVC4。我已更新了启动脚本(installmvc4 main.cmd),以执行以下操作:

  • 创建另一个脚本“installmvc4 impl.cmd”,该脚本调用power shell脚本“installmvc4.ps1”,执行策略设置为unrestricted

  • 创建powershell脚本“installmvc4.ps1”,以使用包中包含的安装程序安装mvc4(我从下载它)

  • 创建一个用户,将其添加到管理员组,并计划使用此用户运行“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" REM创建dos脚本installmvc4-impl.cmd以调用powershell脚本安装MVC4 如果“%%仿真%%”==“true”转到:EOF>%~dp0installmvc4-impl.cmd,则回显 echo powershell-执行策略不受限制%~dp0installmvc4.ps1^>installmvc4.ps1.log 2^>^&1>>%~dp0\installmvc4-impl.cmd echo exit^/B 0>>%~dp0installmvc4-impl.cmd REM创建powershell脚本installmvc4.ps1以安装MVC4 回显调用表达式“%~dp0AspNetMVC4Setup.exe/q/norestart”>%~dp0installmvc4.ps1 REM创建一个管理用户,并使用该用户运行安装MVC4的脚本来安排任务 net用户anuchandy管理员@#123/add.1 net本地组管理员注册/添加 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。

    您的启动脚本文件最后应该有EXIT/B 0命令。

    您不需要运行MVC4的安装程序。您只需要在项目中将引用标记为CopyLocal=true。在操作系统映像上提供mvc3之前,这是由mvc3 web角色项目模板完成的。