我有一个 Web 项目,我想将其发布到我们公司的托管服务器:IIS Vs.6.0。运行我们整个网站的服务器名称是:测试网站并且域是测试网我被添加为用户[电子邮件保护]。
现在,在服务器的 IIS 管理器中有一个名为“websites”的文件夹,我创建了一个名为“test”的文件夹。将我的项目发布到该文件夹中。但这里有一个问题:
我以另一个域的身份登录我的电脑,服务器也在另一个域中。当我看到此文件夹的权限时,它显示:
但是,我以以下身份访问该网页:[电子邮件保护]。访问该页面时我收到此错误:
‘/’应用程序中的服务器错误。
用户“testing\test”登录失败。描述:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中起源的更多信息。
异常详细信息:System.Data.SqlClient.SqlException:用户“testing\test”登录失败。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常来源和位置的信息。
堆栈跟踪:
[SqlException (0x80131904): Login failed for user 'testing\test'.]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +5009598
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() +234
System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2275
System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +35
System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject) +183
System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout) +239
System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, TimeoutTimer timeout, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +195
System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +232
System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +185
System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +33
System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +524
System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +66
System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +479
System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +108
System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +126
System.Data.SqlClient.SqlConnection.Open() +125
System.Data.Linq.SqlClient.SqlConnectionManager.UseConnection(IConnectionUser user) +43
System.Data.Linq.SqlClient.SqlProvider.get_IsSqlCe() +47
System.Data.Linq.SqlClient.SqlProvider.InitializeProviderMode() +20
System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +57
System.Data.Linq.DataQuery`1.System.Collections.Generic.IEnumerable<T>.GetEnumerator() +34
System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) +315
System.Linq.Enumerable.ToList(IEnumerable`1 source) +58
System.Data.Linq.Provider.BindingList.Create(DataContext context, IEnumerable`1 sequence) +82
System.Data.Linq.DataQuery`1.GetNewBindingList() +40
System.Data.Linq.DataQuery`1.System.ComponentModel.IListSource.GetList() +15
System.Web.UI.DataSourceHelper.GetResolvedDataSource(Object dataSource, String dataMember) +54
System.Web.UI.WebControls.ReadOnlyDataSource.System.Web.UI.IDataSource.GetView(String viewName) +41
System.Web.UI.WebControls.DataBoundControl.ConnectToDataSourceView() +266
System.Web.UI.WebControls.DataBoundControl.GetData() +4
System.Web.UI.WebControls.DataBoundControl.PerformSelect() +59
System.Web.UI.WebControls.BaseDataBoundControl.DataBind() +74
System.Web.UI.WebControls.GridView.DataBind() +4
EntityRegistration.FrontEnd.AgentList.Page_Load(Object sender, EventArgs e) in C:\Users\raj.OIS\Desktop\Dropbox\OIS Entity\EntityRegistration\EntityRegistration\FrontEnd\AgentList.aspx.cs:35
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +91
System.Web.UI.Control.LoadRecursive() +74
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207
--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.1
这里有什么问题?
答案1
听起来您正在为 SQL Server 连接字符串使用集成安全性。如果是这种情况,您需要将网络服务或 E-SOFTIND\$MAGNUS 登录名添加到相关 SQL Server。该新登录名应为 Windows 用户,并映射到相关数据库,并根据需要在数据库中具有适当的读取/写入/删除/等权限。
如果 SQL Server 与 Web 服务器安装在同一台计算机上,请使用本地网络服务帐户。如果位于同一域内的不同计算机上,请使用 E-SOFTIND\$MAGNUS 作为 Windows 用户(这是 MAGNUS 计算机上、E-SOFTIND 域上的网络服务帐户的映射)。
请注意,用户名是域、反斜杠(“\”)、美元符号(“$”),然后是安装 Web 服务器的计算机的名称。
答案2
目前尚不清楚您的数据库位于何处,我推测是在网络服务器上。
问题是您的 Sql 配置使用在您的 Web 应用程序 (E-SOFTIND\MAGNUS$) 上下文中运行的默认 Windows 集成身份验证方法,并且所述用户未在您的数据库服务器上的 SQL 实例上设置,因此凭据被拒绝。
非常容易修复,典型的选项包括:
- 将用户添加
E-SOFTIND\MAGNUS$
到 sql 实例,赋予其适当的权限(GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE ON SCHEMA::dbo
如果您不知道的话,这是一个很好的猜测)。 - 更改应用程序池以使用定义的用户帐户,然后授予该用户适当的 SQL 权限。
- 彻底更改身份验证方法以使用 SQL 身份验证。创建 sql 用户,授予适当的权限,然后更改 web.config 中的连接字符串以使用新命名的 sql 用户。
但是,基本上,您需要在数据库中识别一个用户并授予其适当的权限。