2011-06-20 68 views
1

我正在使用openID-InfoCard RP template來創建一個使用openID的項目,該項目在我的PC上正常工作,但是當我將該網站複製到我們的IIS服務器並嘗試瀏覽它時,我出現此錯誤:ASP.net openID項目模板和IIS 7.5

HTTP錯誤500.22 - 內部服務器錯誤 已檢測到ASP.NET設置不適用於集成管理管道模式。

的應用程序池設置爲.NET 4.0 這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> 
    <configSections> 
     <!--<section name="uri" type="System.Configuration.UriSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>--> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler" requirePermission="false"/> 
     <section name="dotNetOpenAuth" type="DotNetOpenAuth.Configuration.DotNetOpenAuthSection" requirePermission="false" allowLocation="true"/> 
    </configSections> 
    <!-- The uri section is necessary to turn on .NET 3.5 support for IDN (international domain names), 
     which is necessary for OpenID urls with unicode characters in the domain/host name. 
     It is also required to put the Uri class into RFC 3986 escaping mode, which OpenID and OAuth require. --> 
    <uri> 
     <idn enabled="All"/> 
     <iriParsing enabled="true"/> 
    </uri> 
    <system.net> 
     <defaultProxy enabled="true"/> 
     <settings> 
      <!-- This setting causes .NET to check certificate revocation lists (CRL) 
       before trusting HTTPS certificates. But this setting tends to not 
       be allowed in shared hosting environments. --> 
      <servicePointManager checkCertificateRevocationList="false"/> 
     </settings> 
    </system.net> 
    <!-- this is an optional configuration section where aspects of dotnetopenauth can be customized --> 
    <dotNetOpenAuth> 
     <messaging> 
      <untrustedWebRequest> 
       <whitelistHosts> 
        <!--<add name="localhost" />--> 
       </whitelistHosts> 
      </untrustedWebRequest> 
     </messaging> 
     <openid> 
      <relyingParty> 
       <security requireSsl="false"> 
        <!-- Uncomment the trustedProviders tag if your relying party should only accept positive assertions from a closed set of OpenID Providers. --> 
        <!--<trustedProviders rejectAssertionsFromUntrustedProviders="true"> 
         <add endpoint="https://www.google.com/accounts/o8/ud" /> 
        </trustedProviders>--> 
       </security> 
       <behaviors> 
        <!-- The following OPTIONAL behavior allows RPs to use SREG only, but be compatible 
         with OPs that use Attribute Exchange (in various formats). --> 
        <add type="DotNetOpenAuth.OpenId.Behaviors.AXFetchAsSregTransform, DotNetOpenAuth"/> 
       </behaviors> 
       <store type="RelyingPartyLogic.RelyingPartyApplicationDbStore, RelyingPartyLogic"/> 
      </relyingParty> 
     </openid> 
     <oauth> 
      <serviceProvider> 
       <store type="RelyingPartyLogic.NonceDbStore, RelyingPartyLogic"/> 
      </serviceProvider> 
     </oauth> 
     <!-- Allow DotNetOpenAuth to publish usage statistics to library authors to improve the library. --> 
     <reporting enabled="false"/> 
    </dotNetOpenAuth> 
    <!-- log4net is a 3rd party (free) logger library that DotNetOpenAuth will use if present but does not require. --> 
    <log4net> 
     <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender"> 
      <bufferSize value="100"/> 
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
      <connectionString value="Data Source=vs-SQLDev;Initial Catalog=Portal;Persist Security Info=True;User ID=***;Password=***;Enlist=False"/> 
      <commandText value="INSERT INTO [Log] ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"/> 
      <parameter> 
       <parameterName value="@log_date"/> 
       <dbType value="DateTime"/> 
       <layout type="log4net.Layout.RawTimeStampLayout"/> 
      </parameter> 
      <parameter> 
       <parameterName value="@thread"/> 
       <dbType value="String"/> 
       <size value="255"/> 
       <layout type="log4net.Layout.PatternLayout"> 
        <conversionPattern value="%thread"/> 
       </layout> 
      </parameter> 
      <parameter> 
       <parameterName value="@log_level"/> 
       <dbType value="String"/> 
       <size value="50"/> 
       <layout type="log4net.Layout.PatternLayout"> 
        <conversionPattern value="%level"/> 
       </layout> 
      </parameter> 
      <parameter> 
       <parameterName value="@logger"/> 
       <dbType value="String"/> 
       <size value="255"/> 
       <layout type="log4net.Layout.PatternLayout"> 
        <conversionPattern value="%logger"/> 
       </layout> 
      </parameter> 
      <parameter> 
       <parameterName value="@message"/> 
       <dbType value="String"/> 
       <size value="4000"/> 
       <layout type="log4net.Layout.PatternLayout"> 
        <conversionPattern value="%message"/> 
       </layout> 
      </parameter> 
      <parameter> 
       <parameterName value="@exception"/> 
       <dbType value="String"/> 
       <size value="2000"/> 
       <layout type="log4net.Layout.ExceptionLayout"/> 
      </parameter> 
     </appender> 
     <!-- Setup the root category, add the appenders and set the default level --> 
     <root> 
      <level value="WARN"/> 
      <appender-ref ref="AdoNetAppender"/> 
     </root> 
     <!-- Specify the level for some specific categories --> 
     <logger name="DotNetOpenAuth"> 
      <level value="WARN"/> 
     </logger> 
     <logger name="DotNetOpenAuth.OpenId"> 
      <level value="INFO"/> 
     </logger> 
     <logger name="DotNetOpenAuth.OAuth"> 
      <level value="INFO"/> 
     </logger> 
    </log4net> 
    <appSettings/> 
    <connectionStrings> 
     <!-- Remember to keep this connection string in sync with the one (if any) that appears in the log4net section. --> 
     <add name="DatabaseEntities" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=vs-SQLDev;Initial Catalog=Portal;Persist Security Info=True;User ID=***;Password=***;Enlist=False&quot;" providerName="System.Data.EntityClient"/> 
    </connectionStrings> 
    <system.web> 
     <!-- 
      Set compilation debug="true" to insert debugging 
      symbols into the compiled page. Because this 
      affects performance, set this value to true only 
      during development. 
     --> 
     <compilation debug="true" targetFramework="4.0"> 
      <assemblies> 
       <remove assembly="DotNetOpenAuth.Contracts"/> 
       <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 
       <add assembly="System.Web.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies> 
     </compilation> 
     <!-- 
      The <authentication> section enables configuration 
      of the security authentication mode used by 
      ASP.NET to identify an incoming user. 
     --> 
     <authentication mode="Forms"> 
      <forms loginUrl="~/login.aspx" name="Portal"/> 
     </authentication> 
     <!-- 
      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"/> 
     <httpModules> 
      <add name="OAuthAuthenticationModule" type="RelyingPartyLogic.OAuthAuthenticationModule, RelyingPartyLogic"/> 
      <add name="Database" type="RelyingPartyLogic.Database, RelyingPartyLogic"/> 
     </httpModules> 
     <roleManager enabled="true" defaultProvider="Database"> 
      <providers> 
       <add name="Database" type="RelyingPartyLogic.DataRoleProvider, RelyingPartyLogic"/> 
      </providers> 
     </roleManager> 
     <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/></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> 
     <modules> 
      <add name="OAuthAuthenticationModule" type="RelyingPartyLogic.OAuthAuthenticationModule, RelyingPartyLogic"/> 
      <add name="Database" type="RelyingPartyLogic.Database, RelyingPartyLogic"/> 
     </modules> 
    </system.webServer> 
    <system.serviceModel> 
     <behaviors> 
      <serviceBehaviors> 
       <behavior name="DataApiBehavior"> 
        <serviceMetadata httpGetEnabled="true"/> 
        <serviceDebug includeExceptionDetailInFaults="true"/> 
        <serviceAuthorization serviceAuthorizationManagerType="OAuthAuthorizationManager, __code" principalPermissionMode="Custom"/> 
       </behavior> 
      </serviceBehaviors> 
     </behaviors> 
     <services> 
      <!--<service behaviorConfiguration="DataApiBehavior" name="DataApi"> 
      </service>--> 
     </services> 
    </system.serviceModel> 
    <location path="default.aspx"> 
     <system.web> 
      <authorization> 
       <allow users="*"/> 
      </authorization> 
     </system.web> 
    </location> 
</configuration> 

回答

0

你或許可以通過更改IIS的Web 模式(所以它不是解決方法管道問題模式)。或者,您可以查看錯誤的調用堆棧,以確定哪些代碼在管道模式下無法正常工作並對其進行更改(隨意將錯誤代碼添加到您的問題中,或者使用DotNetOpenAuth提交錯誤報告)。

+0

謝謝,將Web池更改爲經典模式解決了問題。有沒有什麼辦法可以做到這一點,而不使用經典的網頁池模式? – Asha

+0

經典/管道模式切換僅在Web池上。但是,如果在同一池中有其他網站應使用管道模式,則只需創建另一個池,以便每組網站都可以具有適當的模式。我仍然有興趣聽到你所看到的異常的堆棧跟蹤。我們希望這些項目模板也可以在流水線模式下工作。 –