0

我刚刚将我的 MVC3 ASP.net Web 应用程序上传到我的服务器 2008 R2 IIS 7.5 Express 网络服务器。

Web 应用程序加载正常,但是当单击登录链接并尝试注册用户帐户或登录现有用户帐户时,我收到以下错误:

"抱歉,处理您的请求时出错。 "

如果我浏览我的网络服务器上的网络应用程序(从 IIS7.5 中)并尝试登录链接,我会收到以下 ASP 错误:

"建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。找不到服务器或无法访问该服务器。验证实例名称是否正确以及 SQL Server 是否配置为允许远程连接。(提供者: SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)

"描述:在执行当前 Web 请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关该错误及其源自代码的位置的更多信息。 "

“异常详细信息:System.Data.SqlClient.SqlException:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。未找到或无法访问服务器。验证实例名称是否正确以及 SQL服务器配置为允许远程连接。(提供程序:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)“

源错误:在执行当前 Web 请求期间生成了未处理的异常。有关异常来源和位置的信息可以使用下面的异常堆栈跟踪来识别。”

有人介意帮我解决问题吗?

我在我的 Web.Config 中配置了两个数据库:

<connectionStrings>
    <add name="DatabaseDBContext" connectionString="data source=|DataDirectory|Content_Database.sdf" providerName="System.Data.SqlServerCe.4.0"/>
    <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
  </connectionStrings>

SQL Compact (Content_Database.sdf) 数据库工作正常。我只在尝试访问 aspnetdb.mdf 数据库时收到错误消息。

ASPNETDB.mdf 数据库实际上与从 Visual Web Developer Express 2010 加载 Microsoft MVC3 Razor 模板/教程时获得的状态相同。

我尝试在我的网络服务器上安装 SQL Express 2008,以防万一这是问题,没有任何区别。

整个 Web 应用程序在我的 Visual Web Developer 2010 Express 开发服务器上完美运行(我可以创建用户并成功登录和注销)。一旦上传到网络服务器,它就会失败。

帮助表示赞赏 - 非常感谢:-)

完整的 Web.Config:

    <?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=152368
  -->

<configuration>
  <connectionStrings>
      <add name="DatabaseDBContext" connectionString="data source=|DataDirectory|\Content_Database.sdf" />
      <add name="ApplicationServices" connectionString="data source=|DataDirectory|\aspnetdb.sdf" />

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

  <appSettings>
    <add key="webpages:Version" value="1.0.0.0"/>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
  </appSettings>

  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      </assemblies>
    </compilation>

    <authentication mode="Forms">
      <forms loginUrl="~/Admin/LogOn" timeout="2880" />
    </authentication>

    <membership>
      <providers>
        <clear/>
            <add name="SqlCeMembershipProvider" type="Project1.Domain.SqlCeMembershipProvider" connectionStringName="ApplicationServices" applicationName="/"
         enablePasswordRetrieval="false" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Hashed" writeExceptionsToEventLog="false" />
            <!--<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 defaultProvider="SqlCeRoleProvider"
             enabled="true"
             cacheRolesInCookie="true"
             cookieName=".ASPROLES"
             cookieTimeout="30"
             cookiePath="/"
             cookieRequireSSL="false"
             cookieSlidingExpiration="true"
             cookieProtection="All">
      <providers>
        <clear/>
          <add name="SqlCeRoleProvider" type="System.Web.Security.SqlCeRoleProvider" connectionStringName="ApplicationServices" applicationName="/" writeExceptionsToEventLog="true" />
        <!--<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />-->
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>

    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages"/>
      </namespaces>
    </pages>
  </system.web>

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration

>

4

1 回答 1

0

如果是 Sql Compact数据库,它看起来像您的 DatabaseDBContext/SDF 。从管理员的角度来看,这个引擎是非常不同的。基本上,设置和开始工作非常简单。

您的 ApplicationServices/mdf 文件不是紧凑型数据库,它使用普通的sql(express、dev、workgroup、standard、enterprise 等)引擎。这确实需要一些调整才能开始工作。您的data source=选择是将 SqlClient 配置为使用安装在本地计算机上的特定引擎来打开数据库(这需要将 sql 作为实例安装安装在本地计算机上,名称为SqlExpress)并正确配置为允许连接(可能是远程)。正在将SqlClient 配置为以AppPoolIntegrated Security中配置的用户身份连接到服务器连接到数据库,这要求用户有权访问存储数据库的文件、数据库本身(内部作为安全性)以及 SSPI 的所有其他安全性要求(我强烈建议您保留)。

更新

我有一些项目专门在 Compact Framework 上运行(因为对于小型项目,维护/管理要容易得多)。

要使用 SQL Server Compact 4,您需要安装Visual Studio Tools for SQL Server Compact 4。我为 asp.net 使用 erikej SQL Compact Providers (Membership and Role) 并且没有遇到任何问题。提供程序的好处在于,您针对当前提供程序编写的大部分代码都不会更改,您只是替换了提供程序和数据库。

无论哪种方式,快乐的编码!

更新 2

我的 web.config 有以下条目:

<connectionStrings>
 <add name="membershipDatabase" 
      connectionString="data source=|DataDirectory|\Membership.sdf" />
</connectionStrings>

<membership defaultProvider="SqlCeMembershipProvider">
  <providers>
    <clear />
    <add name="SqlCeMembershipProvider" 
         type="Project1.Domain.SqlCeMembershipProvider"           
         connectionStringName="membershipDatabase" 
         applicationName="/" 
         enablePasswordRetrieval="false" 
         requiresQuestionAndAnswer="false" 
         requiresUniqueEmail="true" 
         passwordFormat="Hashed"  
         writeExceptionsToEventLog="false" />
  </providers>
</membership>
<roleManager defaultProvider="SqlCeRoleProvider" 
             enabled="true" 
             cacheRolesInCookie="true" 
             cookieName=".ASPROLES" 
             cookieTimeout="30" 
             cookiePath="/" 
             cookieRequireSSL="false" 
             cookieSlidingExpiration="true" 
             cookieProtection="All">
  <providers>
    <clear />
    <add name="SqlCeRoleProvider" 
         type="Project1.Domain.SqlCeRoleProvider" 
         connectionStringName="membershipDatabase" 
         applicationName="/" 
         writeExceptionsToEventLog="true" />
  </providers>
</roleManager>
于 2012-04-17T17:02:33.680 回答