发布ASP.NET应用程序时的10个好习惯
2008-02-29 19:03
369 查看
这是发布ASP.NET应用程序时值得注意的十点内容(个人归纳,排名不分先后),但愿能给你的开发带来些许助益。欢迎补充新的观点和项目。
In no particular order, here are the top ten things I've learned to pay attention to when dealing with production ASP.NET applications. Hopefully they will help you save you some time and headaches. As always, your thoughts and additions are welcome.
创建新的密钥
Generate new encryption keys
When moving an application to production for the first time it is a good idea to generate new encryption keys. This includes the machine validation key and decryption key as well as any other custom keys your application may be using. There is an article on CodeProject(http://www.codeproject.com/KB/aspnet/machineKey.aspx) that talks about generating machineKeys specifically that should be helpful with this.
加密web.config中的敏感配置节点
Encrypt sensitive sections of your web.config
This includes both the connection string and machine key sections. See Scott Guthrie's post(http://weblogs.asp.net/scottgu/archive/2006/01/09/434893.aspx) for some good references. Note that if your application runs in a clustered environment you will need to share a custom key using the RSA provider as described in an MSDN article(http://msdn2.microsoft.com/en-us/library/68ze1hb2(VS.80).aspx).
使用可信任的SQL连接
Use trusted SQL connections
BBoth Barry Dorrans(http://idunno.org/articles/276.aspx) and Alex Chang(http://weblogs.asp.net/achang/archive/2004/04/15/113866.aspx) have articles which discuss this in detail.
在machine.config中设置retail为true
Set retail="true" in your machine.config
<configuration>
<system.web>
<deployment retail="true"/>
</system.web>
</configuration>
TThis will kill three birds with one stone. It will force the 'debug' flag in the b.config to be false, it will disable page output tracing, and it will force the custom error page to be shown to remote users rather than the actual exception or error message. For more information you can read Scott Guthrie's post(http://weblogs.asp.net/scottgu/archive/2006/04/11/442448.aspx) or the MSDN reference(http://msdn2.microsoft.com/en-us/library/ms228298(VS.80).aspx).
为站点创建独立的应用程序池
Create a new application pool for your site
When setting up your new site for the first time do not share an existing application pool. Create a new application pool which will be used by only by the new web application.
为应用程序池设置最大可用内存
Set the memory limit for your application pool
When creating the application pool, specifically set the memory limit rather than the time limit which is set by default. http://www.asp.net has a good whitepaper(http://www.asp.net/learn/whitepapers/aspnet-and-iis6/) which explains the value of this:
By default IIS 6.0 does not set a limit on the amount of memory that IIS is allowed to use. ASP.NET’s Cache feature relies on a limitation of memory so the Cache can proactively remove unused items from memory.
It is recommended that you configure the memory recycling feature of IIS 6.0.
创建并适时使用app_Offline.htm文件件
Create and appropriately use an app_Offline.htm file
TThere are many benefits to using this file. It provides an easy way to take your application offline in a somewhat user friendly way (you can at least have a pretty explanation) while fixing critical issues or pushing a major update. It also forces an application restart in case you forget to do this for a deployment. Once again, ScottGu is the best source(http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx) for more information on this.
实现可重复、易操作的部署功能
Develop a repeatable deployment process and automate it
It is way too easy to make mistakes when deploying any type of software. This is especially the case with software that uses configuration files that may be different between the development, staging, or production environments. I would argue that the process you come up with is not nearly as important as it being easily repeatable and automated. You can fine tune the process as needed, but you don't want a simple typo to bring a site down.
确保生成和引用的相关程序集均为release版本
Build and reference release versions of all assemblies
In addition to making sure ASP.NET is not configured in debug mode, also make sure that your assemblies are not debug assemblies. There are of course exceptions if you are trying to solve a unique issue in your production environment ... but in most cases you should always deploy with release builds for all assemblies.
加载测试 负载测试
Load test
This goes without saying. Inevitably, good load testing will uncover threading and memory issues not otherwise considered.
原文地址:http://daptivate.com/archive/2008/02/12/top-10-best-practices-for-production-asp-net-applications.aspx
In no particular order, here are the top ten things I've learned to pay attention to when dealing with production ASP.NET applications. Hopefully they will help you save you some time and headaches. As always, your thoughts and additions are welcome.
创建新的密钥
Generate new encryption keys
When moving an application to production for the first time it is a good idea to generate new encryption keys. This includes the machine validation key and decryption key as well as any other custom keys your application may be using. There is an article on CodeProject(http://www.codeproject.com/KB/aspnet/machineKey.aspx) that talks about generating machineKeys specifically that should be helpful with this.
加密web.config中的敏感配置节点
Encrypt sensitive sections of your web.config
This includes both the connection string and machine key sections. See Scott Guthrie's post(http://weblogs.asp.net/scottgu/archive/2006/01/09/434893.aspx) for some good references. Note that if your application runs in a clustered environment you will need to share a custom key using the RSA provider as described in an MSDN article(http://msdn2.microsoft.com/en-us/library/68ze1hb2(VS.80).aspx).
使用可信任的SQL连接
Use trusted SQL connections
BBoth Barry Dorrans(http://idunno.org/articles/276.aspx) and Alex Chang(http://weblogs.asp.net/achang/archive/2004/04/15/113866.aspx) have articles which discuss this in detail.
在machine.config中设置retail为true
Set retail="true" in your machine.config
<configuration>
<system.web>
<deployment retail="true"/>
</system.web>
</configuration>
TThis will kill three birds with one stone. It will force the 'debug' flag in the b.config to be false, it will disable page output tracing, and it will force the custom error page to be shown to remote users rather than the actual exception or error message. For more information you can read Scott Guthrie's post(http://weblogs.asp.net/scottgu/archive/2006/04/11/442448.aspx) or the MSDN reference(http://msdn2.microsoft.com/en-us/library/ms228298(VS.80).aspx).
为站点创建独立的应用程序池
Create a new application pool for your site
When setting up your new site for the first time do not share an existing application pool. Create a new application pool which will be used by only by the new web application.
为应用程序池设置最大可用内存
Set the memory limit for your application pool
When creating the application pool, specifically set the memory limit rather than the time limit which is set by default. http://www.asp.net has a good whitepaper(http://www.asp.net/learn/whitepapers/aspnet-and-iis6/) which explains the value of this:
By default IIS 6.0 does not set a limit on the amount of memory that IIS is allowed to use. ASP.NET’s Cache feature relies on a limitation of memory so the Cache can proactively remove unused items from memory.
It is recommended that you configure the memory recycling feature of IIS 6.0.
创建并适时使用app_Offline.htm文件件
Create and appropriately use an app_Offline.htm file
TThere are many benefits to using this file. It provides an easy way to take your application offline in a somewhat user friendly way (you can at least have a pretty explanation) while fixing critical issues or pushing a major update. It also forces an application restart in case you forget to do this for a deployment. Once again, ScottGu is the best source(http://weblogs.asp.net/scottgu/archive/2006/04/09/442332.aspx) for more information on this.
实现可重复、易操作的部署功能
Develop a repeatable deployment process and automate it
It is way too easy to make mistakes when deploying any type of software. This is especially the case with software that uses configuration files that may be different between the development, staging, or production environments. I would argue that the process you come up with is not nearly as important as it being easily repeatable and automated. You can fine tune the process as needed, but you don't want a simple typo to bring a site down.
确保生成和引用的相关程序集均为release版本
Build and reference release versions of all assemblies
In addition to making sure ASP.NET is not configured in debug mode, also make sure that your assemblies are not debug assemblies. There are of course exceptions if you are trying to solve a unique issue in your production environment ... but in most cases you should always deploy with release builds for all assemblies.
加载测试 负载测试
Load test
This goes without saying. Inevitably, good load testing will uncover threading and memory issues not otherwise considered.
原文地址:http://daptivate.com/archive/2008/02/12/top-10-best-practices-for-production-asp-net-applications.aspx
相关文章推荐
- 发布ASP.NET应用程序时的10个好习惯(转)
- 发布ASP.NET应用程序时的10个好习惯(转)
- ASP.NET网站发布问题:服务器应用程序不可用
- asp.net 不同应用程序在IIS发布后实现Session共享
- Asp.Net 应用程序在IIS发布后无法连接oracle数据库问题的解决方法
- 发布asp.net应用程序
- ASP.NET网站发布问题:服务器应用程序不可用
- Asp.Net 应用程序在IIS发布后无法连接oracle数据库问题的解决方法
- 编写高性能ASP.NET应用程序的10个技巧(zz)
- ASP.NET Core 中文文档 第二章 指南(3)用 Visual Studio 发布一个 Azure 云 Web 应用程序
- Asp.net应用程序使用FPSE发布失败,老提示输用户名和密码解决方法
- Asp.Net 应用程序在IIS发布后无法连接oracle数据库问题的解决方法
- 云中漫步 - 2:使用 VS2012 与 Windows Azure Web 站点创建并发布 ASP.NET Web 应用程序
- 关于IIS上发布asp.net应用程序让外网用户访问问题
- Delphi XE7下 Intraweb 发布为ASP.NET应用程序
- asp.net 2.0教程 应用程序的编写、编译及发布
- asp.net项目发布网上-当前自定义错误设置禁止远程查看应用程序
- 发布asp.net应用程序
- IIS web服务器发布ASP.NET 应用程序
- c# asp.net 在vs2012上网站调试成功,发布后点击按钮后出现:“/”应用程序中的服务器错误。未将对象引用