none
关于 ASP.NET 4 中 Web.config 转换功能的问题 RRS feed

  • 问题

  • 用vs2010新建了一个 asp.net 项目,想体验一下这个Web.config 转换的新功能。于是我按照以下形式写 web.config

    <configuration>
     <connectionStrings>
      <add name="DailyReport" connectionString="" />
     </connectionStrings>
      <system.web>
        <compilation debug="true" targetFramework="4.0" />
      </system.web>
    </configuration>
    

    在 web.debug.config 中写道

    <?xml version="1.0" encoding="utf-8"?>
    <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
     <connectionStrings>
      <add name="DailyReport" connectionString="Data Source=.;Initial Catalog=DailyReport;User Id=sa;Password=0" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
     </connectionStrings>
    
     <system.web>
    
     </system.web>
    </configuration>
    

    此时,我的项目的生成操作设置为 Debug,然后以文件系统方式发布这个项目,在发布成功的目标文件夹中查看 web.config,发现本来 connectString 属性为空的<add name="DailyReport" connectionString="" />节点,已经被正确的设置成了<add name="DailyReport" connectionString="Data Source=.;Initial Catalog=DailyReport;User Id=sa;Password=0" />,后台代码是通过“WebConfigurationManager.ConnectionStrings["DailyReport"].ConnectionString;” 这句话来获取连接字符串,在IIS7中发布以后能正常起作用。

    但是,为什么在 vs2010 中按F5进行调试的时候,这句话始终返回的是 "" 空串呢?(我的项目配置的是使用本地 IIS 服务器)

    希望对这个有所了解的朋友能帮帮我,谢谢!

    2010年7月22日 7:03

答案

  • 因为ASP.NET的运行环境只认识web.config,而不认识web.debug.config。

    想要让web.debug.config和web.release.config中的转换产生作用,只能发布。

    我个人的建议是不要在web.debug.config或者web.release.config中写入在开发/调试的过程中需要访问到的配置,这些东西应该直接写在web.config中。


    Most questions i'm interested in might have two or more possible answers i know or i don't know. So please read question carefully before you try to answer, and explan your question detailedly before asking for help. 很多看起来简单的问题都存在多种可能性,如果您不能详细的解释,别人就不能正确判断出您所遭遇的实际状况,因而不能给出最适合的解决办法。在您没有给出详细信息的情况下,施助者只有张贴大量有可能有关的解决办法。而您可能没有耐心阅读所有这些东西,在这种情况下您就客观地形成了对施助者的伤害——除非“施助者”并没有用心去尝试帮助您。 同样地,当您尝试解答一个看起来“好像遇到过”的问题的时候,您也需要详细地阅读和理解这个问题。如果您不了解问题的细节,您可能会给出不相关的或者无助于解决当前问题的解答。
    2010年8月1日 17:37

全部回复

  • 你好:

    你可以尝试用ConfigurationManager.ConnectionStrings["connectString"].ToString();

    希望对你有所帮助。

    2010年7月30日 6:56
    版主
  • 因为ASP.NET的运行环境只认识web.config,而不认识web.debug.config。

    想要让web.debug.config和web.release.config中的转换产生作用,只能发布。

    我个人的建议是不要在web.debug.config或者web.release.config中写入在开发/调试的过程中需要访问到的配置,这些东西应该直接写在web.config中。


    Most questions i'm interested in might have two or more possible answers i know or i don't know. So please read question carefully before you try to answer, and explan your question detailedly before asking for help. 很多看起来简单的问题都存在多种可能性,如果您不能详细的解释,别人就不能正确判断出您所遭遇的实际状况,因而不能给出最适合的解决办法。在您没有给出详细信息的情况下,施助者只有张贴大量有可能有关的解决办法。而您可能没有耐心阅读所有这些东西,在这种情况下您就客观地形成了对施助者的伤害——除非“施助者”并没有用心去尝试帮助您。 同样地,当您尝试解答一个看起来“好像遇到过”的问题的时候,您也需要详细地阅读和理解这个问题。如果您不了解问题的细节,您可能会给出不相关的或者无助于解决当前问题的解答。
    2010年8月1日 17:37
  • 嗯,知道了,非常感谢!
    2010年8月2日 2:34
  • 您好:

    试了一下,不行…………

    2010年8月2日 2:34