none
ASPNETDB.mdf数据库的问题 RRS feed

  • 问题

  • 我有一个网站用到了默认的aspnetdb.mdf数据库,将它发布到IIS上面后就无操作与aspnetdb.mdf相关联的数据了,发布之前一切都正常。请问这是怎么回事啊。
      也就是一个网站上用到了login控件用来登录    将这个网站发布在IIS后就无法登录了
    2009年6月10日 10:55

答案

  • 非常感谢两位楼主的帮忙 问题已经解决了  原因是必须要用Http的方式创建网站发布到IIS上aspnetdb.mdf中的数据才能访问
    2009年6月11日 11:55

全部回复

  • 报什么错?
    知识改变命运,奋斗成就人生!
    2009年6月10日 12:04
    版主
  • 你好,数据库的桥梁Web.config配置有问题,请贴出来看看!
    邹俊才
    2009年6月10日 13:38
    版主
  • <?xml version="1.0"?>
    <!--
        注意: 除了手动编辑此文件以外,您还可以使用
        Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
         “网站”->“Asp.Net 配置”选项。
        设置和注释的完整列表在
        machine.config.comments 中,该文件通常位于
        \Windows\Microsoft.Net\Framework\v2.x\Config 中
    -->
    <configuration>
     <appSettings/>
     <connectionStrings>
      <add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Shopping.mdf;Integrated Security=True;User Instance=True"
       providerName="System.Data.SqlClient" />
     </connectionStrings>
     <system.web>
      <!--
                设置 compilation debug="true" 将调试符号插入
                已编译的页面中。但由于这会
                影响性能,因此只在开发过程中将此值
                设置为 true。
            -->
      <roleManager enabled="true" />
      <anonymousIdentification enabled="true"/>
      <compilation debug="true"/>
      <!--
                通过 <authentication> 节可以配置 ASP.NET 使用的
                安全身份验证模式,
                以标识传入的用户。
            -->
      <authentication mode="Forms">
       <forms loginUrl="Default.aspx" defaultUrl="Default.aspx"></forms>
      </authentication>
      <!--
                如果在执行请求的过程中出现未处理的错误,
                则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
                开发人员通过该节可以配置
                要显示的 html 错误页
                以代替错误堆栈跟踪。

            <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>
            -->

      <profile enabled="true">
       <properties>
        <add name="ShopCart" type="ShoppingCast.ShopCast"  allowAnonymous="true"/>
       </properties>
      </profile>
     </system.web>
    </configuration>



    它就是登陆不起 始终提示重新输入密码,但是密码绝对是没错的

    2009年6月10日 14:24
  • 配置文件有问题为什么没发布的时候调试没问题啊
    2009年6月10日 14:26
  • 配置文件有问题为什么没发布的时候调试没问题啊

       hi,
       1. 你配置文件里没看到你aspnetdb.mdf数据库文件的连接字符串啊。
    2.你找到你使用这个数据库的连接的程序集,aspnetdb.mdf使用的连接语句。在对应的位置修改一下。
    3.配置文件里可以参考这个增加一个吧。<add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\aspnetdb.mdf;Integrated Security=True;User Instance=True"
       providerName="System.Data.SqlClient" />
         还有就是你服务器是否可以打开数据库的端口,这个也会影响的,注意检查一下~
    Frank.Xu Lei--谦卑若愚,好学若饥
    专注于.NET平台下分布式应用系统开发和企业应用系统集成
    Focus on Distributed Applications Development and EAI based on .NET
    老徐的博客:http://www.cnblogs.com/frank_xl
    2009年6月10日 16:16
    版主
  • 你好,
    • 你的配置文件中程序连接的数据库是Shopping.mdf,而不是aspnetdb.mdf,所以,肯定没有数据啦,
    • 同时你要注意,AttachDbFilename=|DataDirectory|\aspnetdb.mdf,可以自动将数据库附加到SQL Server,

    邹俊才
    2009年6月10日 17:20
    版主
  • 添加了连接字符串还是不行!!Aspnetdb数据库是自动去检索他的连接字符串吗?

    2009年6月11日 2:09
  • aspnetdb.mdf数据库的连接字符串不是系统自动去检索的吗?
    没写aspnetdb.mdf连接字符串为什么在未发布前可以访问这个数据库中的数据呢?
    2009年6月11日 2:10
  • 你好,

    有可能是在本地开发的时候,当你使用到membership的时候vs默认的是自身的这个aspnetdb,但是当你发布后iis就没有这个配置就找不到了。
    所以你最好在webconfig中写上这个membership的配置。


    Microsoft Online Community Support
    2009年6月11日 2:29
  • 请问 该怎么写啊
    谢谢
    2009年6月11日 3:11
  • 你好,

    首先参考下面添加一个连接:

    <connectionStrings>
           <add name="AspNetSqlMembershipConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=D:\Project\ASPServerControl\App_Data\ASPNETDB.MDF;Integrated Security=True;User Instance=True"/>
    </connectionStrings>
    

    你可以直接在solution中点击那个mdf文件,然后在server exploer中右键单击该数据库,然后选择查看属性,就可以在其属性窗口中看到connection string的值了。
    另外添加下面这段配置:
    <system.web>
     <membership>
          <providers>
            <clear/>
    
            <add name="AspNetSqlMembershipProvider"
    
                type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    
                connectionStringName="AspNetSqlMembershipConnectionString"
    
                enablePasswordRetrieval="false"
    
                enablePasswordReset="true"
    
                requiresQuestionAndAnswer="false"
    
      requiresUniqueEmail="false"
    
                passwordFormat="Hashed"
    
                maxInvalidPasswordAttempts="5"
    
                minRequiredPasswordLength="3"
    
                minRequiredNonalphanumericCharacters="0"
    
                passwordAttemptWindow="10"
    
                passwordStrengthRegularExpression=""
    
                applicationName="test"
                    />
    
          </providers>    
        </membership>
    </system.web>


    Microsoft Online Community Support
    2009年6月11日 3:24
  • 你好,简单的处理方法,你把数据库连接字符串的名称改为LocalSqlServer,这样你就好理解了,默认就是用这个,至于原理,你可以搜索一下。
    邹俊才
    2009年6月11日 4:01
    版主
  • 我按照你的方法做了 还是一样的错误!你能帮我调试一下吗?


    先谢谢了
    2009年6月11日 4:26
  • <?xml version="1.0"?>
    <!--
        注意: 除了手动编辑此文件以外,您还可以使用
        Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
         “网站”->“Asp.Net 配置”选项。
        设置和注释的完整列表在
        machine.config.comments 中,该文件通常位于
        \Windows\Microsoft.Net\Framework\v2.x\Config 中
    -->
    <configuration>
     <appSettings/>
     <connectionStrings>
      <add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Shopping.mdf;Integrated Security=True;User Instance=True"
       providerName="System.Data.SqlClient" />
        <remove name="LocalSqlServer" />
        <add name="LocalSqlServer" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\aspnetdb.mdf;Integrated Security=True;User Instance=True"
           providerName="System.Data.SqlClient" />
      </connectionStrings>
     <system.web>
      <!--
                设置 compilation debug="true" 将调试符号插入
                已编译的页面中。但由于这会
                影响性能,因此只在开发过程中将此值
                设置为 true。
            -->
      <!--<roleManager enabled="true" />-->
      <anonymousIdentification enabled="true"/>
      <compilation debug="true"/>
      <!--
                通过 <authentication> 节可以配置 ASP.NET 使用的
                安全身份验证模式,
                以标识传入的用户。
            -->
      <authentication mode="Forms">
       <forms loginUrl="Default.aspx" defaultUrl="Default.aspx"></forms>
      </authentication>
       
        <!--
                如果在执行请求的过程中出现未处理的错误,
                则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
                开发人员通过该节可以配置
                要显示的 html 错误页
                以代替错误堆栈跟踪。

            <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>
            -->

        <membership>
          <providers>
            <clear />
            <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
                 connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true"
              applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7"
              minRequiredNonalphanumericCharacters="1" passwordAttemptWindow="10" passwordStrengthRegularExpression="" />
          </providers>
        </membership>
        <profile enabled="true">
          <providers>
            <remove name="AspNetSqlProfileProvider" />
            <add name="AspNetSqlProfileProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
          </providers>
          <properties>
            <add name="ShopCart" type="ShoppingCast.ShopCast"  allowAnonymous="true"/>
          </properties>
        </profile>
        <roleManager enabled="true">
          <providers>
            <remove name="AspNetSqlRoleProvider" />
            <add name="AspNetSqlRoleProvider" connectionStringName="LocalSqlServer" applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
            <add name="AspNetWindowsTokenRoleProvider" applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
          </providers>
        </roleManager>
       
      <!--<profile enabled="true">
       <properties>
        <add name="ShopCart" type="ShoppingCast.ShopCast"  allowAnonymous="true"/>
       </properties>
      </profile>-->
     </system.web>
     
     <system.net>
      <mailSettings>
       <smtp from="jomhy818@sina.com">
        <network host="smtp.sina.com" password="1234567." userName="jomhy818" />
       </smtp>
      </mailSettings>
     </system.net>
    </configuration>
    这是我修改过后的配置文件

    2009年6月11日 4:30
  •  <connectionStrings>
         <remove name="LocalSqlServer" />
        <add name="LocalSqlServer" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\aspnetdb.mdf;Integrated Security=True;User Instance=True"
           providerName="System.Data.SqlClient" />
      </connectionStrings>

     


    你好,

    你把aspnet.mdf的路径换成在你本机的绝对路径试试。


    Microsoft Online Community Support
    2009年6月11日 6:31
  • <?xml version="1.0"?>
    <configuration>
      <appSettings/>
      <connectionStrings>
        <remove name="LocalSqlServer" />
        <add name="LocalSqlServer" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\aspnetdb.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />
      </connectionStrings>
      <system.web>
        <anonymousIdentification enabled="true"/>
        <compilation debug="true"/>
        <authentication mode="Forms">
          <forms loginUrl="Default.aspx" defaultUrl="Default.aspx"></forms>
        </authentication>
      </system.web>
      <system.net>
        <mailSettings>
          <smtp from="jomhy818@sina.com">
            <network host="smtp.sina.com" password="1234567." userName="jomhy818" />
          </smtp>
        </mailSettings>
      </system.net>
    </configuration>
    这样就可以了!

    邹俊才
    2009年6月11日 6:42
    版主
  • 非常感谢两位楼主的帮忙 问题已经解决了  原因是必须要用Http的方式创建网站发布到IIS上aspnetdb.mdf中的数据才能访问
    2009年6月11日 11:55
  • 邹兄,你好

    我刚才测试了下,发现以file方式创建的网站如果用到默认的aspnetdb.MDF,发布时会有问题,有的时候即使发布成功了也会发生如楼主所说的情况。
    我搜索了下,好像得把附带的aspnetdb.mdf也得发布。你可以看看下面这个连接。
    http://gregorybeamer.spaces.live.com/blog/cns!B036196EAF9B34A8!630.entry

    不知道你有没有这个问题。
    Microsoft Online Community Support
    2009年6月12日 3:34
  • 你好,KeFang Chen

    这种方式,我是第一次看到,多谢!我是这样做的, aspnetdb.mdf是用sql server 2008管理界面附加上去的,当然连接字符串我也不是用AttachDbFilename,所以没有出现这个问题,可以正常使用。 像楼主的情况,如果下载一个Express的管理界面,应该可以解决吧!

    再次,多谢
    KeFang Chen ,明天试一下那种方式。
    邹俊才
    2009年6月12日 7:53
    版主
  • 突然,想到是不是文件方式与IIS方式创建的mdf的数据库文件中的权限设置的不一样。
    邹俊才
    2009年6月12日 7:57
    版主
  • ^_^

    不用客气,共同学习!
    Microsoft Online Community Support
    2009年6月12日 7:58
  • 恩,很高兴认识你,多多交流,共同进步!呵呵
    邹俊才
    2009年6月12日 8:03
    版主
  • 有可能,因为http创建的时候是直接在iis上创建的。网上有说file方式权限最大,其次是http,然后是ftp。具体权限有什么不同我也不是很清楚。


    Microsoft Online Community Support
    2009年6月12日 8:03