2009-03-16 3 views
4

ASP .NET에서 멤버쉽 API를 사용 중이고 준비 서버에서 다음과 같은 문제가 발생했습니다. 응용 프로그램이 로컬 컴퓨터에서 정상적으로 작동합니다. 데이터 테이블은 SQL Server에 저장됩니다. 로컬 서버와 스테이징 서버 모두 동일한 DB 서버를 가리 킵니다. 내 준비 서버에 배포 할 때 나는 다음과 같은 오류가 발생합니다 :ASP 구성원 이상한 문제

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 

web.config 오라클과 관련된 아무것도 포함하지 않는, 심지어 오라클과 무엇을하려고하는 이유를 모르겠어요.

왜 이런 일이 발생했는지에 대한 통찰력이 있습니까?

[편집] 로컬 컴퓨터의 machine.config에 OracleRoleProvider 키가 없습니다. 하지만 내 스테이징 서버 않습니다. 그게 도움이된다면.

답변

0

이 오류는 web.config가 아닌 machine.conf에 오류가 있음을 나타냅니다. 우리가 삭제되는 이유는, 기본적으로

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

이 시스템 레벨에서 정의 된 모든 공급자를 제거합니다 :

+0

예 근무 "OraAspNetConString"에 대한 빈 ConnectionString을 추가,하지만 내 통제 불능의 ... 작업은 약이 있습니까? – DavidS

+0

가장 쉬운 해결책은 oracle 연결 문자열이 machine.config에있는 이유를 찾는 것입니다. 제거 할 수 없으면 무시해야합니다. Josh가 언급 한 web.config에 이 있습니까? 나는 그것이 공급자를 깨끗하게해야한다고 생각했다. – dtc

4
당신은 여기에 예를 들어, 설정 파일에 자신의 공급자를 정의 할 필요가

는 회원 업체입니다 그런 다음 새 공급자를 정의합니다. 시스템 수준에서 공급자를 필요로하는 경우 기본값으로 자신을 정의하거나 앱 코드에서 공급자를 구체적으로 요청할 수 있습니다.

+0

나는 이미 거기에있다. – DavidS

+0

OraAspNetConString이라는 더미 연결 문자열을 추가하십시오. 제거했다면 실행해서는 안됩니다. 그러나 이것은 당신이 계속 나아갈 수있게 할 것입니다. 또한 RoleProvier와 Membership을 위해 그렇게했는지 확인하십시오. – JoshBerke

5

여기에 오래된 질문이 있지만 방금 만났고 더 자세한 정보를 공유하려고했습니다.

먼저 블록이 다시 Web.config의 입국을 ConnectionString을 빈 OraAspNetConString를 추가하는 것입니다 connectionStrings의 <clear/>해야 할 경우 가장 쉬운 해결책 :

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

어떤이의에 때 당신에게 install the Oracle .NET package을 발생을 귀하의 컴퓨터는 machine-level connectionString으로 OraAspNetConString과 함께 귀하의 machine.config에 다른 공급자 톤을 설치합니다. <clear/> 요소는 OraAspNetConString을 없애고 오라클의 machine.config 추가 덕분에 기본적으로로드 된 다른 모든 Oracle 공급자가 connectionString을 찾을 수 없을 때 충돌이 발생합니다.

당신의 machine.config에 추가 된 다른 오라클 업체의 대부분은 여전히 ​​진행되기 때문에 작동하지 않았다 멤버 자격 공급자의 요소를 사용하여 탐구 여기에 다른 대답은 그래서 그냥 하나를 삭제하는 OraAspNetConString을 찾고있다 공급자가 도움이되지 않습니다.

은 내이 Machine.config에 설치된 모든 공급자이다 : 당신은 당신이 있는지 확인해야 할 것 빈 OraAspNetConString을 추가하지 않은 경우 그래서

<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> 

당신이 중 하나를 <clear/> 모든 사람의 다음과 같은 오라클 공급자에 가서이 같은 각 공급자 클래스에 <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> 

내 웹 응용 프로그램의 모든 맵이나 건강 모니터링 코드를 처리하지하지만 난 여전히 수동으로 0,123,024,593을 추가했다 내 웹에있는 다른 제공 업체를위한요소.config 또는 뭔가가 충돌하지 OraAspNetConString 연결 문자열을 찾는 것입니다.

0

단순히 나를

<connectionStrings> 
    <clear /> 
    <add name="OraAspNetConString" connectionString=" "/> 
    .................. your other connectionstrings goes here ..... 
</connectionStrings>