将asp.net应用程序迁移到Load Balance和NAS环境
1. 权限控制
a) 将Web Server和NAS加入同一个Domain(AD)中,如DomainWeb。当然也可以使用所有Web Server与NAS的某个帐号的密码相同来进行欺骗。但是这样在管理上会比较复杂。
b) 在域中创建一个专用于asp.net程序运行的帐号(替代本地的ASPNET),如ASPNETOwner。
2. NAS目录与权限
a) 在NAS上设置一个共享目录,如\\nas\upload,确保DomainWeb\ASPNETOwner对NAS的磁盘和共享都有写权限。
3. Web Server目录与权限
a) 保证DomainWeb\ASPNETOwner对本地Web程序目录的访问权限。
b) 保证DomainWeb\ASPNETOwner可以写C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files目录。
c) 保证DomainWeb\ASPNETOwner可以写系统的临时目录(为满足一些特殊情况)。
4. 程序处理
a) 确保不使用Session(为了保证Load Balance算法的多样性),如果必须使用则可以使用State Server或数据库存储Session,但是强烈建议不要使用Session。
b) 统一Cookie和ViewState的Key(保证先后访问不同Web Server可以正常的解密ViewState),因为默认的是Key是各服务器自动生成。
c) 更改程序的web.config文件,设置Identity,使用DomainWeb\ASPNETOwner和密码运行asp.net程序。
Web.config相关部分示例:
<system.web>
<machineKey
validationKey= "250B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
decryptionKey= "1A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
validation="SHA1"
/>
<identity impersonate="true" userName="DomainWeb\ASPNETOwner" password="Password"/>
<httpRuntime maxRequestLength="10240" useFullyQualifiedRedirectUrl="true" appRequestQueueLimit="500" executionTimeout="100"/>
</system.web>