gpt4 book ai didi

asp.net-mvc-3 - 关于 DotNetOpenAuth.IEmbeddedResourceRetrieval 和 Razor View 抛出的 InvalidOperationException

转载 作者:行者123 更新时间:2023-12-04 10:05:40 24 4
gpt4 key购买 nike

当我的 Razor View 调用 @Html.OpenIdSelector(... 时我收到了 InvalidOperationException :

The current IHttpHandler is not one of types: System.Web.UI.Page, DotNetOpenAuth.IEmbeddedResourceRetrieval. An embedded resource URL provider must be set in your .config file.



我到底应该在 config 中设置什么?文件?

最佳答案

刚刚NuGet DotNetOpenAuth包裹。它会在你的配置文件中设置你需要的一切:

alt text

  • 右键单击 References解决方案资源管理器中的 Web 项目
  • Add Library Package Reference...
  • 点击 Online标签。
  • 在搜索框中输入 dotnetopenauth
  • 点击Install

  • 一切都将自动设置,正确的程序集将从 Internet 下载并添加为引用。
    web.config 是这样的执行此操作后文件如下所示:
    <?xml version="1.0" encoding="utf-8"?>
    <!--
    For more information on how to configure your ASP.NET application, please visit
    http://go.microsoft.com/fwlink/?LinkId=152368
    -->
    <configuration>
    <configSections>
    <section name="uri" type="System.Configuration.UriSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    <section name="dotNetOpenAuth" type="DotNetOpenAuth.Configuration.DotNetOpenAuthSection" requirePermission="false" allowLocation="true" />
    </configSections>
    <connectionStrings>
    <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
    </connectionStrings>
    <appSettings>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    </appSettings>
    <system.web>
    <compilation debug="true" targetFramework="4.0">
    <assemblies>
    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </assemblies>
    </compilation>
    <authentication mode="Forms">
    <forms loginUrl="~/Account/LogOn" timeout="2880" />
    </authentication>
    <membership>
    <providers>
    <clear />
    <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
    </providers>
    </membership>
    <profile>
    <providers>
    <clear />
    <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
    </providers>
    </profile>
    <roleManager enabled="false">
    <providers>
    <clear />
    <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
    <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
    </providers>
    </roleManager>
    <pages>
    <namespaces>
    <add namespace="System.Web.Helpers" />
    <add namespace="System.Web.Mvc" />
    <add namespace="System.Web.Mvc.Ajax" />
    <add namespace="System.Web.Mvc.Html" />
    <add namespace="System.Web.Routing" />
    <add namespace="System.Web.WebPages" />
    </namespaces>
    </pages>
    </system.web>
    <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>
    <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
    <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0" />
    </dependentAssembly>
    </assemblyBinding>
    <legacyHMACWarning enabled="0" />
    </runtime>
    <uri>
    <!-- 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. -->
    <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="true"/>-->
    </settings>
    </system.net>
    <dotNetOpenAuth>
    <!-- This is an optional configuration section where aspects of dotnetopenauth can be customized. -->
    <!-- For a complete set of configuration options see http://www.dotnetopenauth.net/developers/code-snippets/configuration-options/ -->
    <openid>
    <relyingParty>
    <security requireSsl="false" />
    <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>
    </relyingParty>
    </openid>
    <messaging>
    <untrustedWebRequest>
    <whitelistHosts>
    <!-- Uncomment to enable communication with localhost (should generally not activate in production!) -->
    <!--<add name="localhost" />-->
    </whitelistHosts>
    </untrustedWebRequest>
    </messaging>
    <!-- Allow DotNetOpenAuth to publish usage statistics to library authors to improve the library. -->
    <reporting enabled="true" />
    </dotNetOpenAuth>
    </configuration>

    更新:

    您可以实现自定义资源检索提供程序:
    public class CustomResourceProvider : IEmbeddedResourceRetrieval
    {
    public Uri GetWebResourceUrl(Type someTypeInResourceAssembly, string manifestResourceName)
    {
    return new Uri("http://www.google.com");
    }
    }

    然后在 web.config注册:
    <dotNetOpenAuth>
    <webResourceUrlProvider type="AppName.CustomResourceProvider, AppName" />
    ...
    </dotNetOpenAuth>

    但我建议您使用 openid-selector用于生成登录表单的库。

    关于asp.net-mvc-3 - 关于 DotNetOpenAuth.IEmbeddedResourceRetrieval 和 Razor View 抛出的 InvalidOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4757291/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com