2013-04-25 5 views
1

У нас есть служба azure, и теперь мне нужно настроить ARR (маршрутизацию запроса приложения). Я следовал блогу http://robindotnet.wordpress.com/2011/07/, и ARR работает нормально. Теперь мне нужно, чтобы включить diskCaching для этого, и я пытаюсь ниже команды:Ошибка Azure ARR при включении дискового кэша

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/diskCache /+"[path='c:\cache',maxUsage='0']" /commit:apphost >> C:\setDiskCache.txt 

Но получить ниже сообщение об ошибке: ERROR (сообщение:. Новый объект driveLocation недостающего необходимых атрибутов не могу добавить запись коллекции типа «driveLocation 'с уникальным атрибутом ключа' path ', установленным в' c: \ cache '.)

и нет содержимого, загружаемого в эту папку. Любое направление или помощь приветствуются.

Ниже полный файл CMD для справки:

cd /d "%~dp0" 

start /wait msiexec.exe /i webfarm_amd64_en-US.msi /qn /log C:\installWebfarmLog.txt 
start /wait msiexec.exe /i requestRouter_amd64_en-US.msi /qn /log C:\installARRLog.txt 

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/proxy /enabled:"True" /reverseRewriteHostInResponseHeaders:"False" /preserveHostHeader:"True" /commit:apphost >> C:\setProxyLog.txt 

%windir%\system32\inetsrv\appcmd.exe set config -section:applicationPools -applicationPoolDefaults.processModel.idleTimeout:00:00:00 >> C:\setAppPool.txt 

%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/diskCache /+"[path='c:\cache',maxUsage='0']" /commit:apphost >> C:\setDiskCache.txt 

exit /b 0 

я могу найти здесь то же самое для IIS [http://www.iis.net/learn/extensions/configuring-application-request-routing - (arr)/configure-and-enable-disk-cache-in-application-request-routing], которые можно активировать вручную. Но мы должны включить это программно.

ответ

1

Как это часто бывает, в сообщении об ошибке содержится подсказка относительно причины. Проблема в том, что у вас может быть только одна запись на значение местоположения диска. Это означает, что скрипт работает нормально в первый раз, но второй раз он будет бросать, потому что значение уже было применено.

Вы не можете удалить узел с помощью appcmd (он не поддерживает очистку коллекции), но вы можете использовать текстовый редактор (этот файл:% windir% \ System32 \ inetsrv \ config \ applicationHost.config). Или вы можете запустить Powershell скрипт:

Import-Module WebAdministration 
Remove-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -filter "system.webServer/diskCache" -name "." 

В любом случае, это узел, который будет манипулировать:

<driveLocation path="c:\cache" maxUsage="0" /> 

После этого вы сможете повторно запустить свой код.