关于.net:您如何使用Machine.config?

关于.net:您如何使用Machine.config?

How are you using the Machine.config, or are you?

对于ASP.Net应用程序部署,您要在machine.config中存储什么类型的信息(如果有)?

如果您不使用它,则如何管理特定于环境的配置设置,这些设置可能会因每个环境而改变?

我正在寻找一些"最佳做法"以及每种做法的优点/缺点。 我们将在两个月内将一个全新的应用程序部署到生产环境中,我对这些类型的决策有一定的自由度。 我想确保我以最好的方式来处理问题,并试图避免以后再开枪射击自己。

仅供参考,我们目前仅将其(machine.config)用于数据库连接信息,并将所有可能更改的其他变量存储在数据库的配置表中。


如果要对服务器进行负载平衡,则必须绝对确保所有服务器上的机器密钥都相同。 Viewstate应该与服务器无关,但并非如此,因此,如果服务器之间的机器密钥不同,则会出现Viewstate损坏错误。

1
2
3
<machineKey validationKey='A130E240DF1C49E2764EF8A86CEDCBB11274E5298A130CA08B90EED016C0
14CEAE1D86344C29E67E99DF83347E43820050A2B9C9FC89E0574BF3394B6D0401A9'
decryptionKey='2CC37FFA8D14925B9CBCC0E3B1506F35066FEF33FEB4ADC8' validation='SHA1'/>

来自:http://www.c-sharpcorner.com/UploadFile/gopenath/Page107182007032219AM/Page1.aspx

PS确保您可以启用ViewStateMAC =" false",但不能。


我们正在考虑使用machine.config为环境添加一个密钥,然后在web.config中有一个部分对于所有环境都完全相同。这样我们就可以进行"真实的" XCopy部署。

例如。在每台计算机(本地开发工作站,舞台服务器,构建服务器,生产服务器)的machine.config中,我们将添加以下内容:

1
</appSettings>

然后,任何特定于环境的配置元素都会附加环境,如下所示:

1
2
3
4
5
6
<connectionStrings>
   
</connectionStrings>

   
</appSettings>

我们没有解决方案的一个问题是如何在web.config中为调试环境而不是实时环境启用语句跟踪。

另一个问题是实时连接字符串包括。用户名和密码现在在您的源代码管理系统中。但是,这对我们来说不是问题。


我们在生产服务器上使用machine.config来设置/删除对生产很重要的特定配置,我们永远不会忘记设置它们。

这些是最重要的2个:

1
2
3
4
<system.web>
    <deployment retail="true" />
    <healthMonitoring enabled="true" />
</system.web>

我不仅将Machine.config用于ASP.NET,而且还将其用于整体配置。我在C#中实现了哈希算法(Tiger),并希望可以通过计算机请求使用它。因此,在GAC中注册了我的程序集并将以下内容添加到machine.config中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <mscorlib>
        <cryptographySettings>
            <cryptoNameMapping>
                <cryptoClasses>
                    <cryptoClass Tiger192="Jcs.Tiger.Tiger192, Jcs.Tiger, Culture=neutral, PublicKeyToken=66c61a8173417e64, Version=1.0.0.4"/>
                    <cryptoClass Tiger160="Jcs.Tiger.Tiger160, Jcs.Tiger, Culture=neutral, PublicKeyToken=66c61a8173417e64, Version=1.0.0.4"/>
                    <cryptoClass Tiger128="Jcs.Tiger.Tiger128, Jcs.Tiger, Culture=neutral, PublicKeyToken=66c61a8173417e64, Version=1.0.0.4"/>
                </cryptoClasses>
                <nameEntry name="Tiger" class="Tiger192"/>
                <nameEntry name="TigerFull" class="Tiger192"/>
                <nameEntry name="Tiger192" class="Tiger192"/>
                <nameEntry name="Tiger160" class="Tiger160"/>
                <nameEntry name="Tiger128" class="Tiger128"/>
                <nameEntry name="System.Security.Cryptography.HashAlgorithm" class="Tiger192"/>
            </cryptoNameMapping>
            <oidMap>
                <oidEntry OID="1.3.6.1.4.1.11591.12.2" name="Jcs.Tiger.Tiger192"/>
            </oidMap>
        </cryptographySettings>
    </mscorlib>
</configuration>

这使我的代码看起来像这样:

1
2
3
4
using (var h1 = HashAlgorithm.Create("Tiger192"))
{
   ...
}

而且我的代码中的Jcs.Tiger.dll程序集完全没有依赖性,无论是硬的还是软的。


推荐阅读

    linux设置命令行长度?

    linux设置命令行长度?,系统,工作,信息,地址,命令,工具,异常,管理,目录,文件,l

    linux内核配置命令?

    linux内核配置命令?,工作,系统,管理,环境,信息,命令,工具,软件,设备,服务,调

    linux进入配置的命令?

    linux进入配置的命令?,网络,地址,服务,系统,状态,工作,信息,技术指标,最新,

    linux设置代替命令?

    linux设置代替命令?,系统,地址,网络,工作,软件,工具,服务,信息,命令,别名,lin

    linux命令设置时区?

    linux命令设置时区?,时间,系统,国家,大陆,命令,时区,时钟,日期,指令,时分,lin

    linux设置命令限制?

    linux设置命令限制?,数字,情况,信息,管理,系统,最新,在线,设备,第一,发行,Lin

    linux设置日志命令行?

    linux设置日志命令行?,异常,系统,实时,日志,管理,信息,对比,项目,名称,情况,L

    linux配置网络命令?

    linux配置网络命令?,系统,地址,工作,网络,代码,信息,工具,名字,设备,命令,lin

    linux命令行设置网卡?

    linux命令行设置网卡?,系统,地址,信息,网络,工具,电脑,工作,名称,设备,网卡,l

    linux命令优先级设置?

    linux命令优先级设置?,系统,时间,实时,策略,优先级,分时,管理,周期性,进程,

    linux设置ip命令?

    linux设置ip命令?,地址,系统,密码,设备,命令,服务,工具,网络,网卡,计算机,在L

    linux设置命令是什么?

    linux设置命令是什么?,系统,工作,信息,名称,地址,命令,在线,基础,标准,工具,l

    配置linux命令行颜色?

    配置linux命令行颜色?,系统,地址,电脑,分析,代码,信息,设备,终端,颜色,命令,L

    linux配置相关的命令?

    linux配置相关的命令?,网络,地址,系统,工具,代码,状态,命令,信息,管理,初级,

    linux命令设置密码?

    linux命令设置密码?,密码,系统,服务,软件,地址,电脑,流程,管理,用户,命令,问

    linux配置网卡的命令?

    linux配置网卡的命令?,网络,信息,系统,工具,代码,地址,设备,工作,电脑,最新,i

    linux设置编码命令?

    linux设置编码命令?,系统,数据,发展,文件,字符集,命令,数据库,以下,终端,大

    配置网关的命令linux?

    配置网关的命令linux?,地址,系统,网络,代码,信息,环境,命令,网关,服务,电脑,

    linux命令行设置语言?

    linux命令行设置语言?,系统,管理,环境,国家,工具,电脑,软件,文化,底部,语言,l

    linux设置壁纸的命令?

    linux设置壁纸的命令?,图片,系统,电脑,照片,位置,终端,颜色,字体,单击,壁纸,