Пожалуйста, смотрите в конце поста подробное вставление ошибки и соответствующие разделы моего web.config
Я использую VS2010, vb.net, .net framework 4.0 и SQL Server 2008 Express в Windows 7 Pro со всеми установленными обновлениями. Я разработал веб-сайт, который использует членство, профили и роли. Я позволил встроенным провайдерам создать для меня файл aspnetdb.mdf в папке App_Data. Я добавил несколько собственных таблиц в aspnetdb.mdf, чтобы у меня была единая база данных для всех данных моего сайта.
Я размещаю сайт на своем собственном сервере. Он использует Windows 2003 Server, IIS 6, SQL 2008 Express, и все мое программное обеспечение, включая ОС, содержит самые последние пакеты обновлений, обновления и все обновления .net Framework, включая 4.0. Не осталось обновлений для установки, и я уверен, что моя проблема не в отсутствующей версии обновления или фреймворка.
Я скопировал файлы aspnetdb.mdf и .ldf из папки app_code в папку sql express на моем сервере и прикрепил базу данных. Я делаю это потому, что не хочу, чтобы файл автоматически прикреплялся, потому что в будущем я, скорее всего, буду использовать коммерческий хостинг. Я добавил пользователя сервера SQL с правами собственности на БД. сильный текст
Затем я изменил строку подключения в web.config, чтобы она указала на UNC моего экземпляра SQL на моем сервере и прошла аутентификацию с именем пользователя и паролем сервера sql, которые я установила с правами собственности на эту базу данных. Я обновил свои поставщики членства, роли и профиля в своем файле web.config, чтобы использовать новую строку подключения sql, и я обязательно включил параметр application = "/" и использовал его перед каждым поставщиком.
Я могу нормально запускать сайт с моей машины для разработки. Я могу войти в него и использовать все его функции. Однако, когда я публикую сайт на своем сервере, я могу получить доступ к сайту как локально, так и через Интернет. Я могу перемещаться по нему, и он извлекает все данные из таблиц, которые я сам добавил в базу данных, но , когда я пытаюсь войти в него или создать новую учетную запись (в основном все, что использует членство, роли или профили) сайт падает с ошибкой и всеми данными ниже.
Я проверил, что имя приложения в моей базе данных aspnetdb на самом деле просто "/". Я убедился, что я работаю из пула приложений, использующего инфраструктуру 4.0. Многое из того, что я погуглил и прочитал, похоже, указывает на проблему с моими провайдерами, но я не могу понять, почему он отлично работает в Casini (или как называется сервер разработки) на моей локальной машине, но вылетает в моей сети сервер. В обоих случаях они подключаются к одной базе данных.
Буду очень признателен, если кто-нибудь скажет мне, что я здесь делаю неправильно. Ниже приводится полная ошибка, отображаемая моим сервером при сбое сайта, а также соответствующие разделы моего файла web.config.
Полное содержание сообщения об ошибке и соответствующие разделы web.config приведены ниже:
Ошибка сервера в приложении '/'.
Значение не может быть нулевым.
Имя параметра: тип
Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.ArgumentNullException: значение не может быть нулевым.
Имя параметра: тип
Ошибка источника:
Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение. Информацию о происхождении и местонахождении исключения можно определить с помощью приведенной ниже трассировки стека исключений.
Трассировка стека:
[ArgumentNullException: значение не может быть нулевым.
Имя параметра: тип]
System.Activator.CreateInstance (тип Type, логический непубличный тип) +9643414System.Web.Profile.ProfileBase.CreateMyInstance (строковое имя пользователя, логическое значение isAuthenticated) +79
System.Web.Profile.ProfileBase.Create (строковое имя пользователя, логическое значение isAuthenticated) +247
System.Web.HttpContext.get_Profile () +107
_perfect.get_Profile () +20
_perfect.Page_Load (Отправитель объекта, EventArgs e) +368
System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp, Объект o, Объект t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback (Отправитель объекта, EventArgs e) +35
System.Web.UI.Control.OnLoad (EventArgs e) +91
System.Web.UI.Control.LoadRecursive () +74
System.Web.UI.Control.LoadRecursive () +146
System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint) + 2207
Информация о версии: Microsoft .NET Framework Версия: 4.0.30319; ASP.NET версия: 4.0.30319.1
Строка подключения и провайдеры из web.config приведены ниже:
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=Server1\SQLEXPRESS; Initial Catalog=************; User ID=*******; Password=********" providerName="System.Data.SqlClient" /
</connectionStrings>
<roleManager enabled="true" defaultProvider="PerfectTenseRoleProvider">
<providers>
<clear />
<add name="PerfectTenseRoleProvider"
type="System.Web.Security.SqlRoleProvider"
connectionStringName="ConnectionString"
applicationName="/"
/>
</providers>
</roleManager>
<providers>
<clear />
<add name="PerfectTenseProfileProvider"
type="System.Web.Profile.SqlProfileProvider"
connectionStringName="ConnectionString"
applicationName="/"
/>
</providers>
<properties>
<add name="*****" type="string"/>
<add name="*****" type="string"/>
<add name="*****" type="string"/>
<add name="*****" type="string"/>
<add name="*****" type="string"/>
<add name="*****" type="string"/>
<add name="*****" type="string"/>
<add name="*****" type="string"/>
<add name="*****" type="string"/>
<add name="*****" type="string"/>
<add name="*****" type="string"/>
<add name="*****" type="string"/>
</properties>
</profile>
<membership defaultProvider="AspNetSqlMembershipProviderRelaxed">
<providers>
<clear />
<add name="AspNetSqlMembershipProviderRelaxed"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="ConnectionString"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="7"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
applicationName="/"
/>
</providers>
</membership>