Веб-приложение / учебное пособие по MVC3 не будет входить в систему с использованием ASPNETDB.mdf на веб-сервере IIS7
Я только что загрузил свое веб-приложение MVC3 ASP.net на мой сервер 2008 R2 IIS 7.5 Express.
Веб-приложение загружается нормально, но при нажатии на ссылку входа в систему и при попытке зарегистрировать учетную запись пользователя или войти в существующую учетную запись пользователя я получаю следующую ошибку:
"Извините, произошла ошибка при обработке вашего запроса."
Если я просматриваю веб-приложение на своем веб-сервере (из IIS7.5) и пробую ссылку для входа, я получаю следующую ошибку ASP:
"При установлении соединения с SQL Server произошла ошибка, связанная с сетью или конкретным экземпляром. Сервер не был найден или не был доступен. Убедитесь, что имя экземпляра указано правильно и что SQL Server настроен для разрешения удаленных подключений. (Поставщик: Сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске сервера / указан экземпляр)"
"Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде".
"Сведения об исключении: System.Data.SqlClient.SqlException: ошибка, связанная с сетью или конкретным экземпляром, возникла при установлении соединения с SQL Server. Сервер не был найден или не был доступен. Убедитесь, что имя экземпляра правильное и этот SQL Сервер настроен для разрешения удаленных подключений (поставщик: сетевые интерфейсы SQL, ошибка: 26 - ошибка при поиске сервера / указан экземпляр) "
"Ошибка источника: необработанное исключение было сгенерировано во время выполнения текущего веб-запроса. Информацию о происхождении и местонахождении исключения можно определить с помощью приведенной ниже трассировки стека исключений".
Может, кто-нибудь поможет мне решить проблему, пожалуйста?
У меня есть две базы данных, настроенные в моем 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 практически идентична состоянию, которое вы получаете при загрузке шаблона / руководства Microsoft MVC3 Razor из Visual Web Developer Express 2010.
Я попытался установить SQL Express 2008 на свой веб-сервер на случай, если это будет проблемой, без разницы.
Целое веб-приложение прекрасно работает на моем сервере разработки 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
>
1 ответ
Похоже, ваш DatabaseDBContext/SDF, если база данных Sql Compact. Этот движок сильно отличается от точки зрения администратора. В принципе, это очень просто настроить и начать работать.
Ваш файл ApplicationServices/mdf не является компактной базой данных, он использует обычный механизм SQL (Express, Dev, рабочая группа, стандарт, предприятие и т. Д.). Это требует небольшой настройки, чтобы начать работать. Ваш data source=
опция настраивает SqlClient для использования определенного механизма, установленного на локальном компьютере, для открытия базы данных (для этого потребуется установить sql на локальный компьютер в качестве инсталлированной установки с именем SqlExpress) и правильно настроить его для разрешения соединений (возможно, удаленных), Integrated Security
настраивает SqlClient для подключения к серверу в качестве пользователя, настроенного в AppPool для подключения к базе данных, что требует, чтобы этот пользователь имел доступ к файлу, в котором хранится база данных, к самой базе данных (внутри в качестве защиты) и ко всем другие требования безопасности SSPI (которые я настоятельно рекомендую вам сохранить).
Обновить
У меня есть несколько проектов, работающих исключительно на Compact Framework (потому что для небольших проектов гораздо проще поддерживать / администрировать).
Чтобы использовать SQL Server Compact 4, необходимо установить инструменты Visual Studio для SQL Server Compact 4. Я использую erikej SQL Compact Providers (членство и роль) для asp.net и не сталкивался с какими-либо проблемами. Приятной особенностью поставщиков является то, что большая часть кода, который вы написали для текущих поставщиков, не изменится, вы просто заменяете поставщика и базу данных.
В любом случае, счастливого кодирования!
Обновление 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>