在Azure Web角色上更新aspnet.config

在Azure Web角色上更新aspnet.config,azure,signalr,azure-web-roles,azure-cloud-services,appcmd,Azure,Signalr,Azure Web Roles,Azure Cloud Services,Appcmd,我有一个部署到Azure Web角色(云服务,而不是Azure网站)的SignalR解决方案,为了确保我们能够最大限度地增加到每个实例的连接数量,我需要对各种ASP.NET设置进行一些更改,如本文所述: appConcurrentRequestLimit和requestQueueLimit设置可以通过使用APPCMD进行相关更改的启动任务轻松更改。但是,maxConcurrentRequestsPerCPU设置位于aspnet.config文件中,不能通过相同的机制进行更改 我尝试过用启动任务直

我有一个部署到Azure Web角色(云服务,而不是Azure网站)的SignalR解决方案,为了确保我们能够最大限度地增加到每个实例的连接数量,我需要对各种ASP.NET设置进行一些更改,如本文所述:


appConcurrentRequestLimit和requestQueueLimit设置可以通过使用APPCMD进行相关更改的启动任务轻松更改。但是,maxConcurrentRequestsPerCPU设置位于aspnet.config文件中,不能通过相同的机制进行更改

我尝试过用启动任务直接更新该文件(目前只是一个基本的文件替换),但是在启动任务完成后,它似乎被Azure运行时替换,因此更改丢失。我可以将RDP导入机器并手动进行更改,因此我已经看到它可以正常工作,但对于我们希望根据需要进行上下扩展的服务来说,这是不可持续的


任何关于如何在Azure环境中更改此设置的想法都将不胜感激

我最终使用了以下基于注册表的方法,该方法允许我在不使用aspnet.config的情况下更改maxConcurrentRequestsPerCPU设置

我将REG命令行实用程序的以下用法添加到现有的startup.cmd(已用于调用APPCMD更改其他设置):


这将配置32位和64位应用程序池,尽管在这个实例中我只需要64位。

也许您可以使用
ServerManager
类并更改配置。不过,我们甚至没有开始尝试这一点。这只是另一个盲点:我们尝试过从RoleEntryPoint类的开始替换该文件-在web角色中,我们也可以像在工作者角色中一样使用RoleEntryPoint实现。其实例将位于Web角色上的WaIISHost.exe进程中。无论如何,这个过程总是存在的。只有在所有IIS更改完成并且站点准备好运行后,才会调用OnStart。谢谢,我将尝试一下。在Twitter上也有一个建议,我将尝试在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET\{version}中添加一个名为MaxConcurrentRequestsPerCPU的注册表DWORD。您是否尝试过使用Powershell替换该值,然后部署?“appConcurrentRequestLimit和requestQueueLimit设置很容易更改”-
appcmd set-config/section:system.webserver/serverRuntime/appConcurrentRequestLimit:100000
appcmd set-config/section:processModel/autoConfig:false/commit:MACHINE
appcmd set-config/section:processModel/requestQueueLimit:250000/commit:MACHINE
如果在启动任务中使用,不要忘记结尾处的
/f
,否则它将等待第二次输入。注册表更改是否覆盖
aspnet.config
xml文件?
REG ADD HKLM\SOFTWARE\Microsoft\ASP.NET\4.0.30319.0 /v MaxConcurrentRequestsPerCPU /t REG_DWORD /d 10000
REG ADD HKLM\SOFTWARE\Wow6432Node\Microsoft\ASP.NET\4.0.30319.0 /v MaxConcurrentRequestsPerCPU /t REG_DWORD /d 10000