web.config在ASP.NET中使用遗留应用程序时会产生疑惑

时间:2011-03-31 19:02:21

标签: asp.net web-config legacy optimization

在遗留应用程序上使用ASP.NET 2.0 C#进行编码。数据库在MySQL中

如果我从代码

中删除以下行,我想知道是否有任何问题

首先<xhtmlConformance mode="Strict"/>

然后,

  <compilers>
      <compiler language="c#" 
              type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" 
              extension=".cs" 
              compilerOptions="/d:DEBUG;trACE"/>
  </compilers>

最后,

    <browserCaps>
        <case match="^Mozilla/5\.0 \([^)]*\) (Gecko/[-\d]+)(?'VendorProductToken' (?'type'[^/\d]*)([\d]*)/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*)))?">
            browser=Gecko
            <filter>
                <case match="(Gecko/[-\d]+)(?'VendorProductToken' (?'type'[^/\d]*)([\d]*)/(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*)))">
                    type=${type}
                </case>
                <case>
                    <!-- plain Mozilla if no VendorProductToken found -->
                    type=Mozilla
                </case>
            </filter>
            frames=true
            tables=true
            cookies=true
            javascript=true
            javaapplets=true
            ecmascriptversion=1.5
            w3cdomversion=1.0
            css1=true
            css2=true
            xml=true
            tagwriter=System.Web.UI.HtmlTextWriter
            <case match="rv:(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))">
                version=${version}
                majorversion=0${major}
                minorversion=0${minor}
                <case match="^b" with="${letters}">
                    beta=true
                </case>
            </case>
        </case>
        <!-- AppleWebKit Based Browsers (Safari...) //-->
        <case match="AppleWebKit/(?'version'(?'major'\d?)(?'minor'\d{2})(?'letters'\w*)?)">
            browser=AppleWebKit
            version=${version}
            majorversion=0${major}
            minorversion=0.${minor}
            frames=true
            tables=true
            cookies=true
            javascript=true
            javaapplets=true
            ecmascriptversion=1.5
            w3cdomversion=1.0
            css1=true
            css2=true
            xml=true
            tagwriter=System.Web.UI.HtmlTextWriter
            <case match="AppleWebKit/(?'version'(?'major'\d)(?'minor'\d+)(?'letters'\w*))(.* )?(?'type'[^/\d]*)/.*( |$)">
                type=${type}
            </case>
        </case>
        <!-- Konqueror //-->
        <case match=".+[K|k]onqueror/(?'version'(?'major'\d+)(?'minor'(\.[\d])*)(?'letters'[^;]*));\s+(?'platform'[^;\)]*)(;|\))">
            browser=Konqueror
            version=${version}
            majorversion=0${major}
            minorversion=0${minor}
            platform=${platform}
            type=Konqueror
            frames=true
            tables=true
            cookies=true
            javascript=true
            javaapplets=true
            ecmascriptversion=1.5
            w3cdomversion=1.0
            css1=true
            css2=true
            xml=true
            tagwriter=System.Web.UI.HtmlTextWriter
        </case>
        <!-- Opera //-->
        <case match="Opera[ /](?'version'(?'major'\d+)(?'minor'\.(?'minorint'\d+))(?'letters'\w*))">
            <filter match="[7-9]" with="${major}">
                tagwriter=System.Web.UI.HtmlTextWriter
            </filter>
            <filter>
                <case match="7" with="${major}">
                    <filter>
                        <case match="[5-9]" with="${minorint}">
                            ecmascriptversion=1.5
                        </case>
                        <case>
                            ecmascriptversion=1.4
                        </case>
                    </filter>
                </case>
                <case match="[8-9]" with="${major}">
                    ecmascriptversion=1.5
                </case>
            </filter>
        </case>
    </browserCaps>

我相信他们都不需要。目前他们根本需要吗?我真正想知道的是,如果删除它们,是否有任何问题。

我还想知道下面给出的代码段是否与ASP.NET 2.0相关

  <sessionState mode="InProc" 
              stateConnectionString="tcpip=127.0.0.1:42424" 
              sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" 
              cookieless="false" 
              timeout="100"/>

当我的应用程序使用MySQL作为数据库并且身份验证模式是windows。

1 个答案:

答案 0 :(得分:2)

xhtmlConformance设置将Transitional更改为Strict。主要更改是从表单元素中删除name属性。 Source

指定的编译器是2.0,因此不会有任何实际的编译器更改。但是,编译定义了编译器标志debug和trace。这些可以与#if-statements一起使用。两者都应该在生产环境中删除,就像您将使用一样。请注意,编译器设置应位于system.codeDom下,而不是system.web下。 Source

您的browserCaps可以(应该?)移动到您的App_Browsers文件夹中。您基本上定义了不同浏览器的功能,并且在您的代码中的某处检查您的浏览器是否支持特定的详细信息,如javascript或框架。这很失败,因为像Noscript这样的浏览器插件会使检测无效。

您的sessionState声称是InProc,这意味着它由iis进程处理。连接字符串aint在此模式下使用(您需要StateServer或SqlServer)。 Cookieless = false是默认模式,但您已将会话超时增加到100(默认为20)。 Source