3

有人可以帮我吗?在 Visual Studio 中一切正常,但在远程服务器上却不行。我在登录和注销时尝试访问该页面,但遇到了同样的错误。错误:“System.Data.SqlClient.SqlException:用户 'APHOST166\IWAM_plesk(default)' 登录失败。”

网络配置:

 <?xml version="1.0" encoding="utf-8"?>
 <!--
    For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
 -->
 <configuration>
 <connectionStrings>
    <add name="ConnectionString" connectionString="Data Source=ASPHOST166\SQL2008R2,778; Initial Catalog=Rennoz_DATABASEMDF; User ID=Rennoz_Admin; Password=*****" providerName="System.Data.SqlClient"/> 
    <add name="ApplicationServices" connectionString="Data Source=ASPHOST166\SQL2008R2,778; Initial Catalog=Rennoz_DATABASEMDF; User ID=Rennoz_Admin; Password=*****" providerName="System.Data.SqlClient" />
    <add name="DatabaseEntities" connectionString="metadata=res://*/App_Code.Model.csdl|res://*/App_Code.Model.ssdl|res://*/App_Code.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=ASPHOST166\SQL2008R2,778; Initial Catalog=Rennoz_DATABASEMDF; User ID=Rennoz_Admin; Password=*****;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
<system.web>
 <compilation debug="false" targetFramework="4.0">
   <assemblies>
     <add assembly="System.Security, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" />
     <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
     <add assembly="System.Data.Entity.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
    </assemblies>

  <buildProviders>
    <add extension=".edmx" type="System.Data.Entity.Design.AspNet.EntityDesignerBuildProvider" />
  </buildProviders>
</compilation>
  <customErrors mode="Off"></customErrors>
  <trace mostRecent="true" enabled="true" requestLimit="1000" pageOutput="false" localOnly="true"/>
 <authentication mode="Forms" />
 <membership>
   <providers>
     <clear />
     <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
   </providers>
 </membership>
 <profile>
  <providers>
    <clear />
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
   </providers>
 </profile>
 <roleManager enabled="true">
   <providers>
     <clear />
     <add connectionStringName="ApplicationServices" applicationName="/"
      name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" />
    <add applicationName="/" name="AspNetWindowsTokenRoleProvider"
      type="System.Web.Security.WindowsTokenRoleProvider" />
   </providers>
 </roleManager>
</system.web>
<system.webServer>
 <modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
 <location path="Moderation">
     <system.web>
        <authorization>
            <allow roles="Admin" />
                <deny users="*" />
            </authorization>

        </system.web>

    </location>
 </configuration>

页面后面的代码(插入):

 protected void EntityDataSource1_Inserting1(object sender, EntityDataSourceChangingEventArgs e)
 {
     Good pic = (Good)e.Entity;
     //pic.PhotoAlbumId = photoalbumid;
     FileUpload fileupload1 = (FileUpload)ListView1.InsertItem.FindControl("FileUpload1");
     string virtualFolder = "~/pics/";
     string fizfolder = Server.MapPath(virtualFolder);
     string filename = Guid.NewGuid().ToString();
     string extension = System.IO.Path.GetExtension(fileupload1.FileName);

     fileupload1.SaveAs(System.IO.Path.Combine(fizfolder, filename + extension));
     pic.ImageURL = virtualFolder + filename + extension;
     pic.Date = System.DateTime.Today;

 }
4

4 回答 4

6

看起来您的应用程序在 SQL Server 中不存在的帐户下运行。因此,您在实体框架的连接字符串中指定了登录名和密码,我认为您需要Integrated Security=True;从此实体框架连接字符串中删除:

<add name="DatabaseEntities" 
     connectionString="metadata=res://*/App_Code.Model.csdl|res://*/App_Code.Model.ssdl|res://*/App_Code.Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=ASPHOST166\SQL2008R2,778; Initial Catalog=Rennoz_DATABASEMDF; User ID=Rennoz_Admin; Password=*****;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" 
     providerName="System.Data.EntityClient" />

更新:根据您的错误消息,您的 SQL Server 版本不支持用户实例登录标志。所以也删除User Instance=True;参数。

于 2013-04-19T11:30:14.240 回答
3

您的DatabaseEntities连接字符串指定User IDandPassword但也Integrated Security=true(优先)。删除后者以使用指定的 SQL 帐户。

同时删除User Instance=true- 它仅在动态附加 MDF 文件时使用。

于 2013-04-19T11:28:02.203 回答
0

我有一个类似的问题。

我让 Plesk 处理我的连接字符串,然后将其从我的 web.config 文件中删除,但这取决于您。

1) 我使用 Windows 身份验证在登录名下创建了用户“CT11881\IWAM_plesk(default)”。

2) 授予用户在“Server Rolls”和“Securables”中的完全访问权限

http://forums.asp.net/t/1954164.aspx?Windows+2008+VPS+w+Plesk+11+x+SQL+connection+issues

于 2013-12-08T05:18:41.540 回答
0

如果您的 SQL Server 位于不同的计算机上,则必须使用 IntegratedSecurity,您应该在 SQL Server 中允许的相同凭据下运行您的站点。

  1. 如果您的 Web 计算机不在域中,您应该在两台计算机(Web 和 SQL)上创建具有相同凭据的相同用户。在“SQL Server Management Studio”中,添加此用户并设置所需的权限。
  2. 在 IIS 中,转到您的应用程序池,单击“高级设置”并在“身份”属性中设置凭据(对于您创建的用户或域用户)。
  3. 在 IIS 中,在您的站点中,转到“高级设置”并在“物理路径凭据”属性中设置凭据(对于您创建的用户或域用户)。
  4. 在“ConnectionString”中,如果您在“源”属性中使用“localhost”,请在 UNC 地址上更改它,该地址位于您的 SQL 服务器。
  5. 如果无法建立连接,请确保在“SQL Server 配置管理器”中为使用的 SQL 实例启用了 TCP/IP 协议(​​更改后需要重新启动实例),即防火墙允许 TCP 端口 1443在您的 SQL 机器上。您可以借助“Paping”实用程序 - “paping YourSqlMachine -p 1433 -c 4”从 Web 机器 ping 此端口
于 2016-06-03T08:49:22.437 回答