【问题标题】:OWIN Startup class not detected未检测到 OWIN 启动类
【发布时间】:2020-03-21 07:57:03
【问题描述】:

我试图在现有应用程序中实现 OWIN WS Federation。它是asp .net VB 中的Web 应用程序。 我已经添加了 Nugetpackages 中的所有引用 List of refernces added

然后我在 2 个文件中添加了启动类作为 Partial 类。

StartupAuth.vb:

Imports System.Configuration
Imports System.Globalization
Imports System.Threading.Tasks
Imports Microsoft.Owin.Extensions
Imports Microsoft.Owin.Security
Imports Microsoft.Owin.Security.Cookies
Imports Microsoft.Owin.Security.WsFederation
Imports Owin

Partial Public Class Startup
    Private Shared realm As String = ConfigurationManager.AppSettings("ida:Wtrealm")
    Private Shared adfsMetadata As String = ConfigurationManager.AppSettings("ida:ADFSMetadata")

    Public Sub ConfigureAuth(app As IAppBuilder)
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType)

        app.UseCookieAuthentication(New CookieAuthenticationOptions())

        app.UseWsFederationAuthentication(New WsFederationAuthenticationOptions() With {
            .Wtrealm = realm,
            .MetadataAddress = adfsMetadata
        })
        ' This makes any middleware defined above this line run before the Authorization rule is applied in web.config
        app.UseStageMarker(PipelineStage.Authenticate)
    End Sub
End Class

和 Startup.vb:

Imports Microsoft.Owin
Imports Owin

<Assembly: OwinStartupAttribute(GetType(Startup))>

Partial Public Class Startup
    Public Sub Configuration(app As IAppBuilder)
        ConfigureAuth(app)
    End Sub
End Class

我还在 webconfig 中添加了这两行:

<add key="owin:HandleAllRequests" value="true" />
<add key="owin:AppStartup" value="Startup.vb" />

如果有人知道发生了什么,请告诉我。

提前致谢。

因为我没有项目和启动文件的命名空间,所以我没有在配置文件中添加它。当我尝试运行应用程序时,出现以下错误:

Chrome error while running the application

【问题讨论】:

    标签: asp.net vb.net owin startup app-startup


    【解决方案1】:

    问题在于您没有提供 Startup 类的全名,包括其命名空间。即使您不在类文件中使用命名空间,也已经配置了默认的全局命名空间。

    默认命名空间在您的项目设置中定义为根命名空间。它与您的项目名称相同。检查您的项目属性。它将位于 根命名空间 字段中。

    现在,如果您的项目名为 SomeProject,您可以使用以下选项之一进行配置:

    1. 使用属性:&lt;Assembly: OwinStartupAttribute(GetType(SomeProject.Startup))&gt; (同时删除 web.config 文件中的 owin:AppStartup 键)
    2. 使用 web.config 键:&lt;add key="owin:AppStartup" value="SomeProject.Startup" /&gt;

    请注意我是如何删除“.vb”部分的,因为键需要完整的类名而不是文件名。

    使用 web.config 会覆盖属性中的值。所以你只需要使用其中一个,而不是同时使用。

    您可以查看Microsoft's documentation 以更好地了解 OWIN 如何检测 Startup 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-02
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-07
      • 2017-11-23
      • 1970-01-01
      相关资源
      最近更新 更多