Я столкнулся с трудной проблемой. Мой сайт работает уже более десяти лет с использованием простого поставщика ролей по умолчанию как в процессе разработки, так и в режиме реального времени. Он работает на стадии разработки с Windows 7 и IIS 7.
Недавно я добавил на сервер разработки новое приложение, работающее над преобразованием intr anet в службу React WebApi. С тех пор моя машина разработки сообщает мне, что поставщик роли по умолчанию отсутствует. Я попытался отредактировать файл Web.config, изменить настройки приложения (он все еще может видеть роли), проверить доступ пользователя к базе данных, но все безрезультатно. Я даже скопировал действующий сайт в dev с теми же результатами.
Я включаю мой web.config, а также Global.ASAX, так как есть только 2 файла, которые я могу придумать, которые будут актуальны в этом случае.
Global.asax
<%@ Application Language="VB" %>
<script RunAt="server">
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
If (Roles.RoleExists("Admin") = False) Then
Roles.CreateRole("Admin")
Roles.AddUserToRole("MCAD2\webmin", "Admin")
End If
End Sub
Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs on application shutdown
End Sub
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when a new session is started
End Sub
Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when a session ends.
' Note: The Session_End event is raised only when the sessionstate mode
' is set to InProc in the Web.config file. If session mode is set to StateServer
' or SQLServer, the event is not raised.
MCAIntranet.Services.StatusUpdate.clearSession(Session.SessionID)
End Sub
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Code that runs when an unhandled error occurs
' Get the exception object.
Dim exc As Exception = Server.GetLastError
If exc Is Nothing Then Return
' Handle HTTP errors (avoid trapping HttpUnhandledException
' which is generated when a non-HTTP exception
' such as the ones generated by buttons 1-3 in
' Default.aspx is not handled at the page level).
' Log the exception and notify system operators
MCAIntranet.ExceptionUtility.LogException(exc, Context.Request.Url.AbsoluteUri)
'MCAIntranet.ExceptionUtility.NotifySystemOps(exc)
Dim err As String = ""
If exc.InnerException IsNot Nothing Then
err = exc.InnerException.Message
Else
err = exc.Message
End If
' Clear the error from the server
Server.ClearError()
'Redirect HTTP errors to HttpError page
Response.Redirect("/HTMLError.aspx?err=" & Server.HtmlEncode(err) & "&pg=" & Server.HtmlEncode(Context.Request.Url.AbsoluteUri))
End Sub
</script>
Web.config
<?xml version="1.0"?>
<!--
Note: As an alternative to hand editing this file you can use the
web admin tool to configure settings for your application. Use
the Website->Asp.Net Configuration option in Visual Studio.
A full list of settings and comments can be found in
machine.config.comments usually located in
\Windows\Microsoft.Net\Framework\v2.x\Config
-->
<configuration>
<appSettings>
<add key="CrystalImageCleaner-AutoStart" value="true"/>
<add key="CrystalImageCleaner-Sleep" value="60000"/>
<add key="CrystalImageCleaner-Age" value="120000"/>
<add key="AdminUserName" value="AdminUser"/>
<add key="AdminUserPass" value="AdminPwd"/>
</appSettings>
<connectionStrings>
<clear/>
<add name="LocalSqlServer" connectionString="Data Source=MCASQL;Initial Catalog='dotNetRolesDB';Timeout=600;UID=MyUserID;PWD=MyPwd" providerName="System.Data.SqlClient"/>
<add name="Master" connectionString="Data Source=MCASQL;UID=MyUserID;PWD=MyPwd;" providerName="System.Data.SqlClient"/>
<add name="ClientNamesConnectionString" connectionString="Data Source=MCASQL;Initial Catalog='ClientNames';Timeout=600;UID=MyUserID;PWD=MyPwd" providerName="System.Data.SqlClient"/>
<add name="dotNetRoles" connectionString="Data Source=MCASQL;Initial Catalog='dotNetRolesDB';Timeout=600;UID=MyUserID;PWD=MyPwd"/>
<add name="as400" connectionString="Data Source=192.168.100.12;User ID=QSECOFR;Password=met321;" providerName="IBM.Data.DB2.iSeries"/>
<add name="DEV_IntranetConnectionString" connectionString="Data Source=MCASQL;Initial Catalog='DEV_Intranet_test';Timeout=600;UID=MyUserID;PWD=MyPwd" providerName="System.Data.SqlClient"/>
<add name="Lansa_ConnectionString" connectionString="Data Source=MCASQL;Initial Catalog='LANSA';Timeout=600;UID=MyUserID;PWD=MyPwd" providerName="System.Data.SqlClient"/>
<add name="NewBusinessParsing" connectionString="Data Source=MCASQL;Initial Catalog='NewBusinessParsing';Timeout=600;UID=MyUserID;PWD=MyPwd;" providerName="System.Data.SqlClient"/>
<add name="PreAuthConnectionString" connectionString="Data Source='MCASQL';UID=MyUserID;PWD=MyPwd;Timeout=600;Initial Catalog='PreAuth'" providerName="System.Data.SqlClient"/>
<add name="CIBCConnectionString" connectionString="Data Source='MCASQL';UID=MyUserID;PWD=MyPwd;Timeout=600;Pooling=False;Initial Catalog='CIBC'" providerName="System.Data.SqlClient"/>
<add name="iDB2ConnectionString" connectionString="Data Source=192.168.100.12;User ID=GSUTTON;Password=triangle;Data Compression=True;" providerName="IBM.Data.DB2.iSeries"/>
<add name="Corporate_Morning_ReportsConnectionString" connectionString="Data Source=MCASQL;Timeout=600;Initial Catalog=Corporate_Morning_Reports;UID=MyUserID;PWD=MyPwd;Pooling=true" providerName="System.Data.SqlClient"/>
<add name="LANSAConnectionString" connectionString="Data Source=MCASQL;Initial Catalog=LANSA;Timeout=600;User ID=MyUserID;Password=MyPwd" providerName="System.Data.SqlClient"/>
<add name="FTPPassword" connectionString="myFTPPassword"/>
<add name="CConnectConnectionString" connectionString="Data Source=MCASQL;Initial Catalog=CConnect;Timeout=600Persist Security Info=True;User ID=MyUserID;Password=MyPwd" providerName="System.Data.SqlClient"/>
<add name="KeyesMailReportsConnectionString" connectionString="Data Source=MCASQL;Initial Catalog=KeyesMailReports;Persist Security Info=True;User ID=MyUserID;Password=MyPwd;Pooling=False" providerName="System.Data.SqlClient"/>
<add name="Intelec_MCAConnectionString" connectionString="Data Source=mcasql;Initial Catalog=Intelec_MCA;Persist Security Info=True;User ID=MyUserID;Password=MyPwd" providerName="System.Data.SqlClient"/>
</connectionStrings>
<system.web>
<webParts>
<personalization defaultProvider="AspNetSqlPersonalizationProvider">
<providers>
<remove name="AspNetSqlPersonalizationProvider"/>
<add name="AspNetSqlPersonalizationProvider" type="System.Web.UI.WebControls.WebParts.SqlPersonalizationProvider" connectionStringName="LocalSqlServer" applicationName="/"/>
</providers>
<authorization>
<deny users="*" verbs="enterSharedScope"/>
<allow users="*" verbs="modifyState"/>
</authorization>
</personalization>
</webParts>
<!--
Set compilation debug="true" to insert debugging
symbols into the compiled page. Because this
affects performance, set this value to true only
during PRODUCTION.
-->
<globalization culture="en-US" uiCulture="ca-ES"/>
<roleManager enabled="true">
</roleManager>
<profile automaticSaveEnabled="true">
<properties>
<clear/>
<add name="branch" type="integer"/>
<add name="client" type="integer"/>
<add name="EmployeeNumber" type="integer"/>
<add name="EmployeeAccess" type="long"/>
<add name="Restrictions" type="string"/>
<add name="firstName" type="string"/>
<add name="lastName" type="string"/>
<add name="email" type="string"/>
<add name="notes" type="string"/>
<add name="phoneNumber" type="string"/>
<add name="phoneExtension" type="string"/>
<add name="Allowances" type="string"/>
<add name="SMSCredits" type="integer"/>
</properties>
</profile>
<compilation debug="true" defaultLanguage="c#" targetFramework="4.0">
<assemblies>
<add assembly="MSDATASRC, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="ADODB, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="Microsoft.Office.Tools.Excel.v9.0, Version=9.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<!--<add assembly="CrystalDecisions.Enterprise.Framework, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
<add assembly="CrystalDecisions.Enterprise.InfoStore, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>-->
<add assembly="System.DirectoryServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="Accessibility, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies>
</compilation>
<webServices>
<protocols>
<add name="HttpPost"/>
</protocols>
</webServices>
<!--
The <authentication> section enables configuration
of the security authentication mode used by
ASP.NET to identify an incoming user.
-->
<!--
The <customErrors> section enables configuration
of what to do if/when an unhandled error occurs
during the execution of a request. Specifically,
it enables developers to configure html error pages
to be displayed in place of a error stack trace.
<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors
-->
<customErrors mode="Off"/>
<pages buffer="true" validateRequest="false" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID">
<namespaces>
<clear/>
<add namespace="System"/>
<add namespace="System.Collections"/>
<add namespace="System.Collections.Generic"/>
<add namespace="System.Collections.Specialized"/>
<add namespace="System.Configuration"/>
<add namespace="System.Text"/>
<add namespace="System.Text.RegularExpressions"/>
<add namespace="System.Linq"/>
<add namespace="System.Xml.Linq"/>
<add namespace="System.Web"/>
<add namespace="System.Web.Caching"/>
<add namespace="System.Web.SessionState"/>
<add namespace="System.Web.Security"/>
<add namespace="System.Web.Profile"/>
<add namespace="System.Web.UI"/>
<add namespace="System.Web.UI.WebControls"/>
<add namespace="System.Web.UI.WebControls.WebParts"/>
<add namespace="System.Web.UI.HtmlControls"/>
<add namespace="Microsoft.VisualBasic"/>
</namespaces>
<controls>
<add namespace="YControls" assembly="YControls" tagPrefix="YControls"/>
<add tagPrefix="cc1" namespace="AjaxControlToolkit" assembly="AjaxControlToolkit"/>
<add tagPrefix="mca" namespace="MCAIntranet" assembly="gridviewsort"/>
<add tagPrefix="CR" namespace="CrystalDecisions.Web" assembly="CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
<!--<add tagPrefix="CR" namespace="CrystalDecisions.Web" assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/> -->
</controls>
</pages>
<httpHandlers>
<add path="CrystalImageHandler.aspx" verb="GET" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304"/>
<!--<add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>-->
</httpHandlers>
<siteMap defaultProvider="MenuProvider" enabled="true">
<providers>
<add name="MenuProvider" description="Revised SiteMap provider." type="NewXMLSMProvider" siteMapFile="Web.sitemap" securityTrimmingEnabled="true"/>
<add name="BreadCrumbProvider" description="Original SiteMap provider." type="System.Web.XmlSiteMapProvider" siteMapFile="Web.sitemap" securityTrimmingEnabled="true"/>
</providers>
</siteMap>
<identity impersonate="true"/>
</system.web>
<!--
The system.webServer section is required for running ASP.NET AJAX under Internet
Information Services 7.0. It is not necessary for previous version of IIS.
-->
<system.webServer>
<handlers>
<remove name="PageHandlerFactory-ISAPI-4.0_32bit"/>
<add name="PageHandlerFactory-ISAPI-4.0_32bit" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0"/>
<add name="CrystalImageHandler.aspx_GET" verb="GET" path="CrystalImageHandler.aspx" type="CrystalDecisions.Web.CrystalImageHandler, CrystalDecisions.Web, Version=10.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" preCondition="integratedMode"/>
</handlers>
<defaultDocument>
<files>
<clear/>
<add value="default.aspx"/>
<add value="index.html"/>
<add value="indexMaintenance.html"/>
</files>
</defaultDocument>
<validation validateIntegratedModeConfiguration="false"/>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
Редактировать Я изменил web.config, добавив провайдера для диспетчера ролей
<roleManager enabled="true" defaultProvider="MCAIntranet_Role_Provider">
<providers>
<add name="MCAIntranet_Role_Provider" type="System.Web.Security.AuthorizationStoreRoleProvider,System.Web, Version=2.0.0.0, Culture=neutral, publicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" applicationName="/" />
</providers>
</roleManager>
Теперь я перехожу ко второй (похожей) ошибке, касающейся системы аутентификации. Net. Он должен иметь дело с поставщиком профилей.
Это ошибка, которую я получаю:
Ошибка конфигурации Описание: во время обработки файла конфигурации, необходимого для обслуживания этой ошибки, произошла ошибка. запрос. Просмотрите приведенные ниже подробные сведения об ошибке c и соответствующим образом измените файл конфигурации.
Сообщение об ошибке синтаксического анализатора: поставщик профиля по умолчанию не найден.
Ошибка источника:
>Line 65: </providers>
>Line 66: </roleManager>
>Line 67: <profile automaticSaveEnabled="true">
>Line 68: <properties>
>Line 69: <clear />
Я попытался добавить поставщика профиля по умолчанию, используя
<profile automaticSaveEnabled="true" defaultProvider="AspNetSqlProfileProvider">
<providers>
<clear />
<add name="AspNetSqlProfileProvider"
type="System.Web.Profile.ProfileManager"
connectionStringName="LocalSqlServer"
applicationName="/"
/>
</providers>
Но это выдает сообщение, что я не могу создать абстрактный класс. Я понятия не имею, что можно сделать по этому поводу. Когда я проверяю настройки модулей для менеджера ролей, он говорит мне, что его нет в GA C, когда я его открываю. Однако я не получаю это предупреждение для редактора профиля.