这个错误
尝试加载应用程序时发生以下错误。 - 未找到包含 OwinStartupAttribute 的程序集。 - 未找到给定的类型或方法“假”。尝试指定大会。要禁用 OWIN 启动发现,请在 web.config 中添加值为“false”的 appSetting owin:AutomaticAppStartup。要指定 OWIN 启动程序集、类或方法,请在 web.config 中添加具有完全限定的启动类或配置方法名称的 appSetting owin:AppStartup。
出现在我的屏幕上历史上最难看的错误页面上。
https://i.stack.imgur.com/rDKpi.jpg
我尝试通过在配置中插入 owin:AutomaticAppStartup 来按照页面上的说明进行操作。
<appSettings >
<add key="owin:AppStartup" value="false"></add>
</appSettings>
这并没有解决问题。有什么建议么?
<add key="owin:AutomaticAppStartup" value="false"></add>
而不是 <add key="owin:AppStartup" value="false"></add>
,看看是否有效?此外,还有一些帮助链接:OWIN Startup Class Detection 和 Owin provide startup class in web.config (no automatic startup discovery)
将此代码添加到 <configuration>
标记下的 web.config
中,如下图所示。你的错误应该消失了。
<configuration>
<appSettings>
<add key="owin:AutomaticAppStartup" value="false" />
</appSettings>
...
</configuration>
https://i.stack.imgur.com/kDqpB.png
我想在项目中摆脱 OWIN:
从项目 Clean & Rebuild project Run app 中删除 OWIN 引用和 Nuget 包
然后我得到了OWIN错误。这些步骤不起作用,因为 OWIN.dll 仍在 bin/ 目录中。
使固定:
手动删除 bin/ 目录 重建项目
对于那些确实想要开始的人,<add key="owin:AutomaticAppStartup" value="false" />
不起作用,但以下对我有用。
如果您的 Startup.Auth 文件中有一个部分类“Startup”,请在项目的根目录中创建另一个部分 Startup 类。定义一个指向该类的程序集 owinstartup 属性创建一个“配置”方法重建您的应用程序
您还可以创建“配置”方法,并将程序集属性添加到 Startup.Auth,但是这样做可以通过利用 C# 类定义拆分来保持 Startup 类的分离。在此处阅读更多信息:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/partial-classes-and-methods
这是我的 Startup.cs 文件的样子:
using Microsoft.Owin;
using Owin;
[assembly: OwinStartupAttribute(typeof(ProjectNameSpace.Startup))]
namespace ProjectNameSpace
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
}
我错过了这个属性:
[assembly: OwinStartupAttribute(typeof(projectname.Startup))]
其中指定了启动类。更多详情:https://docs.microsoft.com/en-us/aspnet/aspnet/overview/owin-and-katana/owin-startup-class-detection
检查您是否在项目中创建了 Startup 类。这是一个例子:
using Microsoft.Owin;
using Owin;
[assembly: OwinStartupAttribute(typeof({project_name}.Startup))]
namespace AuctionPortal
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
}
您在中提到的类中可能没有配置方法
<appSettings>
<add key="owin:AppStartup" value="WebApplication1.App_Start.Startup"/>
我收到此错误是因为代码中有一个额外的空格
代替
<add key="owin:AutomaticAppStartup" value="false" />
它是
<add key="owin:AutomaticAppStartup " value="false" />
只是更换
using (WebApp.Start(url))
和
using (WebApp.Start<Startup>(url))
解决了我的问题。名为 Startup 的类已经实现。如上所述@robthedev
在 Web.config 中添加以下键将删除代码
<appSettings>
<add key="owin:AutomaticAppStartup" value="false" />
</appSettings>
检查您是否选择了正确的启动项目。我有一个 web api 项目作为启动。这产生了这个错误。
我知道这篇文章很旧,但以防万一有人在寻找相同的错误,请尝试添加
<add key="owin:AutomaticAppStartup" value="false"></add>
在标签 <appSettings>
之后
如果之后出现下一个错误:
HTTP 错误 401.0 - 未经授权的错误消息
在标签 <system.web>
之后添加下一个代码,它可以在开头
<authentication mode="Forms"> <forms loginUrl="~/YourFolderName/yourFileName" timeout="1" /> </authentication>
在我的情况下是:
<authentication mode="Forms"> <forms loginUrl="~/Login/Index" timeout="1" /> </authentication>
使用以下代码将类 Startup.cs 添加到项目的根目录:
using Microsoft.Owin;
using Owin;
[assembly: OwinStartupAttribute(typeof(ProjectName.Startup))]
namespace ProjectName
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
}
我在 Visual Studio 2019 V 16.10.2 中发现了一个错误,当您的项目名称中有空格且命名空间包含下划线时,该错误会引发此错误。要解决此问题,您必须在 web.config -> appSettings 部分中明确设置启动类路径:
<add key="owin:AppStartup" value="ABC_DEF.Startup"/>
我从不工作的分支中删除了所有 DLL,然后我将所有工作的分支中的所有 DDls 复制到了没有工作的分支。这解决了这个问题。
只需将此代码 <add key="owin:AutomaticAppStartup" value="false" />
粘贴到 Web.config 中,而不是在 web.config 中有两个 webconfig,因此请确保将其粘贴到 Web.Config
如果你想使用信号器,你必须在你的项目中添加 startup.cs 类
右键单击您的项目,然后添加新项目并选择 OWIN 启动类
然后在配置方法里面添加下面的代码
app.MapSignalR();
我希望它对你有用
如果部署到 Azure,您会收到此错误。只需删除站点上的所有文件(备份任何 web.config、appsettings.json 或您不想丢失的任何文件)并再次部署。有一些遗留的 dll 文件不应该在站点上,这使得 Azure 门户认为它需要使用 OWIN。
将以下代码添加到您的 web.config 文件中,然后运行项目...
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect oldVersion="1.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
</dependentAssembly>
</runtime>
对于我的情况,它需要 owin 启动类。添加新项目 > OWIN 启动类 > 名称 Startup.cs
就我而言,我有一个带有表单身份验证的主站点。我需要在该站点下创建一个使用身份提供程序进行单点登录的 Web 应用程序。 SSO 应用程序必须读取 Owin 支持的 cookie,并将其转换为 Form cookie 以使两种身份验证兼容。问题是它安装在 Owin 程序集的主站点下,并且出于某种原因,即使它们没有在代码或配置文件中使用,它们也被调用并试图找到 Startup 类。
解决方案是卸载 Nuget 在主站点上添加的所有 Owin 程序集。
我的问题有一个更简单的解决方法。
我没有访问安全站点。一旦我将浏览器指向 https://... 它就开始工作了。
就我而言,我刚刚删除了 bin
和 obj
文件夹。重新启动项目,清理并构建它。