授予ASPNETDB.MDF SQL DB IIS_IUSRS权限

时间:2011-12-27 23:10:46

标签: c# asp.net iis-7 permissions

对这种情况一直很秃头!

我在Windows 7上使用MS VS 2010 C#ASP.NET和MS SQL EXPRESS 2008,IIS 7。

我在页面上有asp.net登录控件。它在开发环境中运行良好。

当我将网站移动到IIS时,会显示登录的aspx页面,所有内容似乎都正常工作。一旦我输入我的登录凭据(已经在MS VS Dev服务器上的相同数据库上进行了测试)并单击登录,我就会看到一个IIS错误,表明我没有权限。 (请参阅堆栈跟踪)

我已经做了一些挖掘,并且读到当MSVS 为登录控件创建数据库时,它为当前用户提供了权限。因此,当我们将它移动到我们的生产服务器(它不是真正的服务器,它只是我们的win 7机器上的IIS进行测试)并尝试通过互联网登录时,似乎IIS_IUSRS没有权限。

我尝试过的事情

1:从解决方案中分离数据库,将其附加到SQL Server Manager中,然后尝试在那里设置权限。根本无法识别IIS_IUSRS帐户。 (我也试过计算机名/ IIS_IUSRS)。这可能是有道理的,因为IIS_IUSRS实际上不是一个Windows帐户。尝试为NT AUTHORITY提供权限时,我也遇到了同样的问题。

  1. 我在想,如果我能以某种方式从IIS_IUSRS创建数据库,它会自动为我找出管道,但不知道从哪里开始,或者是否可能。
  2. stack trace

    这是我用来连接db的连接字符串:

      <connectionStrings>
        <remove name="ApplicationServices"/>
        <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=True;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
      </connectionStrings>
    

    非常感谢任何帮助,我已经被困了很长时间了。

1 个答案:

答案 0 :(得分:0)

在生产IIS服务器上使用SQLEXPRESS UserInstance连接字符串的整个想法充满了困难。您需要做的是将数据库附加到生产环境中的真实SQL Server,并使用不带“UserInstance”指令的常规SQL服务器连接字符串。这是我对SQLEXPRESS的强烈要求,因为它会给那些“认为”只需将本地开发环境移植到真实服务器的开发人员带来很多问题。几乎所有的时间,你都不能。