Нечетное членство в ASP - PullRequest
       11

Нечетное членство в ASP

4 голосов
/ 16 марта 2009

Я использую API членства в ASP .NET и столкнулся со следующей проблемой на моем промежуточном сервере. Приложение отлично работает на моей локальной машине. Таблицы данных хранятся на сервере SQL. И мой локальный, и промежуточный сервер указывают на один и тот же сервер БД. При развертывании на моем промежуточном сервере я получаю следующую ошибку:

 Parser Error Message: The connection name 'OraAspNetConString' was not 
 found in the applications configuration or the connection string is empty. 

    Line 135:    <roleManager>
    Line 136:      <providers>
    Line 137:        <add name="OracleRoleProvider" 

type="Oracle.Web.Security.OracleRoleProvider, Oracle.Web, Version=2.111.6.20,
Culture=neutral, PublicKeyToken=89b483f429c47342" 
connectionStringName="OraAspNetConString" applicationName="" />
    Line 138:        <add name="AspNetSqlRoleProvider"   
connectionStringName="LocalSqlServer" applicationName="/" 
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, 
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    Line 139:        <add name="AspNetWindowsTokenRoleProvider" 
applicationName="/" type="System.Web.Security.WindowsTokenRoleProvider, 
System.Web, Version=2.0.0.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a" />


Source File: 
c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Config\machine.config
    Line: 137 

Я не знаю, почему он даже пытается что-то сделать с Oracle, мой web.config не содержит ничего связанного с Oracle.

Кто-нибудь знает, почему это происходит?

[Изменить] На моей локальной машине machine.config у меня нет ключа OracleRoleProvider. Но мой промежуточный сервер делает. Если это поможет.

Ответы [ 4 ]

6 голосов
/ 02 августа 2012

Старый вопрос здесь, но я просто наткнулся на него и хотел поделиться некоторыми подробностями.

Во-первых, самое простое решение, если вам нужно сделать <clear/> в вашем блоке connectionStrings, это добавить пустую запись строки соединения OraAspNetConString обратно в ваш web.config:

<connectionStrings>
    <clear />
      <add name="OraAspNetConString" connectionString=" "/>    
</connectionStrings>

Что происходит, когда вы устанавливаете пакет Oracle .NET на любом из ваших компьютеров, если он устанавливает тонну различных провайдеров в ваш machine.config вместе с OraAspNetConString в качестве строки соединения на уровне компьютера. Элемент <clear/> избавляется от этого OraAspNetConString, и благодаря добавлениям Oracle machine.config все другие поставщики Oracle, загруженные по умолчанию, терпят крах, когда они не могут найти connectionString.

Другой ответ здесь, где вы исследовали использование элемента для провайдеров членства, не сработал, потому что большинство других провайдеров оракула, добавленных в machine.config, все еще будут искать этот OraAspNetConString , поэтому очищение только один провайдер тебе не поможет.

Это все провайдеры, которые они установили на мой компьютер.config:

<membership><providers>
    <add name="OracleMembershipProvider" type="Oracle.Web.Security.OracleMembershipProvider, Oracle.Web, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" applicationName="" />
</providers></membership>
<profile><providers>
    <add name="OracleProfileProvider" type="Oracle.Web.Profile.OracleProfileProvider, Oracle.Web, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" applicationName=""/>
</providers></profile>
<roleManager><providers>
    <add name="OracleRoleProvider" type="Oracle.Web.Security.OracleRoleProvider, Oracle.Web, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" applicationName=""/>
</providers></roleManager>
<siteMap><providers>
    <add name="OracleSiteMapProvider" type="Oracle.Web.SiteMap.OracleSiteMapProvider, Oracle.Web, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" applicationName="" securityTrimmingEnabled="true"/>
</providers></siteMap>
<webParts>
  <personalization>
    <providers>
      <add name="OraclePersonalizationProvider" type="Oracle.Web.Personalization.OraclePersonalizationProvider, Oracle.Web, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" applicationName=""/>
    </providers>
  </personalization>
</webParts>
<healthMonitoring><providers>
    <add name="OracleWebEventProvider" type="Oracle.Web.Management.OracleWebEventProvider, Oracle.Web, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionStringName="OraAspNetConString" buffer="true" bufferMode="OracleNotification"/>
</providers></healthMonitoring>

Поэтому, если вы не хотите добавлять пустую строку OraAspNetConString, вам необходимо убедиться, что вы либо <clear/> каждый из следующих провайдеров Oracle, либо добавили элемент <remove name=x /> в каждый класс провайдера, например: это:

<membership><providers>
    <remove name="OracleMembershipProvider" />
</providers></membership>
<profile><providers>
    <remove name="OracleProfileProvider" />
</providers></profile>
<roleManager><providers>
    <remove name="OracleRoleProvider" />
</providers></roleManager>
<siteMap><providers>
    <remove name="OracleSiteMapProvider" />
</providers></siteMap>
<healthMonitoring><providers>
    <remove name="OracleWebEventProvider" />
</providers></healthMonitoring>

Я никогда не имел дело с каким-либо кодом siteMap или Health Monitoring в своем веб-приложении, но мне все равно приходилось вручную добавлять эти <remove/> элементы для разных провайдеров в мой web.config, или что-то могло произойти сбой при поиске строки подключения OraAspNetConString, которая не была не там.

4 голосов
/ 16 марта 2009

Вам необходимо определить свой собственный провайдер в вашем конфигурационном файле, например, вот провайдер членства:

    <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
        <providers>
            <clear/>
            <add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="MyConnection" applicationName="MyApp"/>
        </providers>
    </membership>

В основном это удалит всех провайдеров, определенных на системном уровне. Вот почему мы проводим клиринг, а затем вы определяете своих новых провайдеров. Если вам нужны провайдеры на системном уровне, вы можете указать своих собственных по умолчанию или в коде своего приложения специально запросить своего провайдера.

0 голосов
/ 22 августа 2013

Просто добавьте пустую ConnectionString для "OraAspNetConString", сработавшего для меня

<connectionStrings>
    <clear />
    <add name="OraAspNetConString" connectionString=" "/>
    .................. your other connectionstrings goes here .....
</connectionStrings>
0 голосов
/ 16 марта 2009

Эта ошибка говорит о том, что у вас в machine.conf нет web.config.

...