Поставщик ролей по умолчанию не может быть найден только при разработке - PullRequest
0 голосов
/ 17 марта 2020

Я столкнулся с трудной проблемой. Мой сайт работает уже более десяти лет с использованием простого поставщика ролей по умолчанию как в процессе разработки, так и в режиме реального времени. Он работает на стадии разработки с 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, когда я его открываю. Однако я не получаю это предупреждение для редактора профиля.

...