本帖最后由 heiwoshimaoya 于 2010-05-22 20:40:33 编辑

解决方案 »

  1.   

    修改数据库连接字符串,使用sqlserver的登录名和密码,而不是windows验证  
    在SQL Server中添加登录XX\ASPNET并给其相应数据库的权限
    数据库---安全性---找到刚才报错的哪个'ASPNET账号'  
    右键"属性";  
    在里面将要访问的数据库选中  
    在下面的"数据库角色成员身份"里要操作权限
      

  2.   

    补充一点:
      我的应用程序能在visual studio 2005中正常运行,错误出现在iis中
    web.config中<authentication>一节中mode="Forms"
      

  3.   

    不知道1楼这位大哥是不是完整看了我的问题??
    我的问题中写明了:<add key="key1" value="Data Source=.;Initial Catalog=test;User ID=ASPNET;Password=123;Integrated Security=True"/>
    曾经做过的努力:…………
      

  4.   

    把integrated security=true这段删除,integrated security=true是用windows身份认证,用sql server认证方式只用User ID=ASPNET;Password=123;就够了,不然就用windows域名用户,也就是'STUDENT\ASPNET' 用户登陆
      

  5.   

    感谢4楼的热情回答  按照您的方法做了,还是不行 ,错误一模一样!
    这是修改过的web.config中<appsettings>一节的内容:
    <appSettings>
        <add key="key1" value="Data Source=(local);Initial Catalog=test;User ID=ASPNET;Password=123"/>
      </appSettings>
      

  6.   

    你在数据库里设置的是允许sql server认证,还是只允许windows认证? sql server里建的用户名是不是叫aspnet(没有前缀,和web.config里设置的一样)?
      

  7.   

    对了,刚看到你的配置是 :
    add key="key1" value="Data Source=.;Initial Catalog=test;User ID=ASPNET;Password=123;Integrated Security=True"/>
      </appSettings>
        <connectionStrings>
            <add name="mail" connectionString="Data Source=.;Initial Catalog=test;User ID=ASPNET;Password=123;Integrated Security=True"/>
        </connectionStrings>而你的代码是
      string connectionString = ConfigurationManager.AppSettings["key1"].ToString();也就是说,你取的配置是appSetting里的设置,而不是connectionStrings里的设置,你肯定只改了后者(实际上在你代码里不会用到),而没有改前者
      

  8.   

    看错了,你应该把
    <connectionStrings>
      <add name="mail" connectionString="Data Source=.;Initial Catalog=test;User ID=ASPNET;Password=123;Integrated Security=True"/>
      </connectionStrings>
    这一节删掉
      

  9.   

    再次感谢hzzasdf的热情回复,
    我的数据库设置的是sql server和Windows认证混合验证模式,而且我认为既然我的DBHelper.cs中用的<appSetting>这一节连接数据库,那么删除<connectionStrings>对我的错误纠正没有作用,我的<appSettings>这一届已经按照您所说的去掉Integrated Security=True这句话了!错误依旧!
    我感觉我的错误原因还是应该在web.config和sql server2005数据库用户权限角色方面找!
    可是我找不出来了,我已经找了一天时间了,实在没有结果才来csdn上提问啊!
      

  10.   

    连接数据库,只有两种认证方式,windows认证方式和sql server认证方式。
    体现在配置文件里,前者用integrated security=true或者integrated security=sspi,后者用userid=, password=出现
    用户 'STUDENT\ASPNET' 登录失败。
    的错误,如果这个'STUDENT\ASPNET' 是个windows用户,而你的web.config里用的是sql server方式,那只能说明实际数据库连接不是用的你的那个配置项,你需要检查你的代码,看用的到底是哪个配置项,或者究竟是不是用的是你的那个web.config文件。另外一个可能,是你在数据库里,只建了登陆用户,而没有在你所用到的test数据库里有相应的用户,或者你在test数据库里的用户aspnet没有和你的登陆用户关联起来,即所谓的“孤儿用户”(orphaned user).你可以这样检查,用aspnet和123,通过sql server management studio工具登陆数据库,看能否登陆成功,如果行,说明密码没有问题,然后看是是否能打开test数据库,如果不行,那肯定是出现了上面所说的情况,如果行,那肯定是你的代码里不是用的你appsetting里的配置,需要检查你的代码,看到底用的什么配置
      

  11.   

    只有两种方式是微软推荐的,http://msdn.microsoft.com/en-us/library/ms998300.aspx
    http://msdn.microsoft.com/en-us/library/ms998292.aspx一个是使用固定的SQL账号来登录SQL Server服务器,另一个是使用ASP.NET Impersonation。lz只要照着推荐的方式做就不会有问题了。(当然,还要看你读英文的能力了)
      

  12.   

    哈哈 问题解决了
    五天了,这个问题困扰我五天了!!
    我终于解决了,哈哈 高兴啊
      感谢各位大大的热情回答,尤其是hzzasdf的热情回答!感谢!!!
    现将问题总结如下:
    web.config中应该这样配置:
    <?xml version="1.0"?>
    <!-- 
        注意: 除了手动编辑此文件以外,您还可以使用 
        Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
         “网站”->“Asp.Net 配置”选项。
        设置和注释的完整列表在 
        machine.config.comments 中,该文件通常位于 
        \Windows\Microsoft.Net\Framework\v2.x\Config 中
    -->
    <configuration>
      <appSettings>
        <add key="key1" value="Data Source=.;Initial Catalog=test;User ID=ASPNET;Password=123;Integrated Security=True"/>
      </appSettings>
    <connectionStrings>
    <add name="mail" connectionString="Data Source=.;Initial Catalog=test;User ID=STUDENT/ASPNET;Password=123"
    providerName="System.Data.SqlClient"/>
    </connectionStrings>
    <system.web>
    <!-- 
                设置 compilation debug="true" 将调试符号插入
                已编译的页面中。但由于这会 
                影响性能,因此只在开发过程中将此值 
                设置为 true。
            -->
    <compilation debug="true"/>
    <!--
                通过 <authentication> 节可以配置 ASP.NET 使用的 
                安全身份验证模式,
                以标识传入的用户。 
            -->
    <authentication mode="Forms"/>
    <!--
                如果在执行请求的过程中出现未处理的错误,
                则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
                开发人员通过该节可以配置
                要显示的 html 错误页
                以代替错误堆栈跟踪。        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>
            -->
    </system.web>
    </configuration>然后 
      1.打开数据库企业管理器,然后选择数据库---安全性---找到刚才报错的哪个'XXXASPNET' --右键\"属性\";这里是点击根目录下的数据库,而非选中test数据库中的安全性。
     2.选择\"用户映射\"选项---在里面将我们要访问的数据库选中
     3.先别点确定---再选择我们刚才选择的哪个数据库,在下面的\"数据库角色成员身份\"里要选择\"db_owner\"权限 但是我不知道为什么这个问题会解决?只是突然都成了!记得之前我只修改了web.config文件。我修改web.config为原来的,但是还是管用!
    晕啊!