gpt4 book ai didi

c# - OwinStartup 类中的 Configuration 方法如何以及何时被调用/执行?

转载 作者:行者123 更新时间:2023-12-02 15:32:37 25 4
gpt4 key购买 nike

在提出问题之前,我已经浏览了以下帖子:

  1. Can't get the OWIN Startup class to run in IIS Express after renaming ASP.NET project file以及问题中提到的所有帖子。
  2. OWIN Startup Detection
  3. OwinStartupAttribute required in web.config to correct Server Error #884
  4. OWIN Startup class notdetected

这是我的项目的文件夹布局:

enter image description here
目前没有 Controller 或 View 。只是Owin Startup文件。


Startup.cs

using System;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(Bootstrapper.Startup))]

namespace Bootstrapper
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Run(async context =>
{
await context.Response.WriteAsync(GetTime() + " My First OWIN App");
});
}

string GetTime()
{
return DateTime.Now.Millisecond.ToString();
}
}
}


Web.config

<appSettings>
<add key="owin:AutomaticAppStartup" value="true" />
<add key="owin:appStartup" value="Bootstrapper.Startup" />
<add key="webpages:Version" value="2.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="PreserveLoginUrl" value="true" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>


我在Bootstrapper中有以下引用文献项目:

  1. 微软.Owin
  2. Microsoft.Owin.Host.SystemWeb
  3. 欧文
  4. 系统
  5. 系统核心


更新:忘记添加错误消息:

enter image description here


现在,

  1. 为什么它不起作用?
  2. 添加和使用 Owin
    Startup
    的分步过程是什么?一个非常基本的项目中的类(例如访问 Home/Index )?
  3. Owin Startup 中的配置方法如何以及何时执行类是调用/执行?


更新:2016 年 12 月 10 日

检查Project-Folder-Layout 。在 Bootstrapper项目我有以下文件:
IocConfig.cs

[assembly: PreApplicationStartMethod(typeof(IocConfig), "RegisterDependencies")]

namespace Bootstrapper
{
public class IocConfig
{
public static void RegisterDependencies()
{
var builder = new ContainerBuilder();

builder.RegisterControllers(typeof(MvcApplication).Assembly);
builder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());
builder.RegisterModule<AutofacWebTypesModule>();

builder.RegisterType(typeof(MovieService)).As(typeof(IMovieService)).InstancePerRequest();
builder.RegisterType(typeof(MovieRepository)).As(typeof(IMovieRepository)).InstancePerRequest();

var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
}
}

现在我要执行IocConfig.RegisterDependencies()OWIN Startup类(class)。我在做using BootstrapperStartup在顶部,但是它不起作用。我的意思是我无法引用IocConfigStartup 。如何解决这个问题?

最佳答案

  1. 创建一个空的 Web 应用程序项目
  2. 使用 NuGet 安装 OWIN (安装包 Microsoft.Owin.Host.SystemWeb)
  3. 在项目根目录中添加一个名为“Startup.cs”的空类

下面我来回答你的第三个问题。启动类是 OWIN 的入口点,会自动查找。正如官方文档所述:

Naming Convention: Katana looks for a class named Startup in namespace matching the assembly name or the global namespace.

请注意,您也可以选择自己的 Startup 类名称,但必须使用装饰器或 AppConfig 进行设置。正如这里所述: https://www.asp.net/aspnet/overview/owin-and-katana/owin-startup-class-detection

这是基本且有效的 OWIN 测试所需的一切:

using Owin;
using System;

namespace OwinTest
{
public class Startup
{
public static void Configuration(IAppBuilder app)
{
app.Use(async (ctx, next) =>
{
await ctx.Response.WriteAsync(DateTime.Now.ToString() + " My First OWIN App");
});
}
}
}

如果您想使用 MVC(我猜“Home/Index”您指的是 MVC),请按照下列步骤操作:

  1. 安装 MVC NuGet (安装包 Microsoft.AspNet.Mvc)。
  2. 将“Controllers”文件夹添加到您的项目中。
  3. 在新的“Controlles”文件夹下创建一个新的空 Controller (右键单击 -> 添加 -> MVC 5 Controller - Empty)并将其命名为“HomeController”。
  4. 在新创建的“Views/Home”文件夹下创建一个 View 页面。右键->添加->查看。将其命名为“Index”并取消选中“使用布局页面”。

使页面继承自WebViewPage。它应该看起来像这样:

@inherits System.Web.Mvc.WebViewPage
@{
Layout = null;
}

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
<h1>Owin Hello</h1>
</div>
</body>
</html>
  • 添加 global.asax 来设置路由。右键单击项目 -> 添加 -> 新项目 -> 全局应用程序类。
  • 将路由定义添加到 Application_Start 方法中:

    protected void Application_Start(object sender, EventArgs e)
    {
    RouteTable.Routes.MapRoute(name: "Default",
    url: "{controller}/{action}",
    defaults: new { controller = "Home", action = "Index" });
    }
  • 不要忘记注释掉上面的“..await ctx.Response.WriteAsync...”中间件。否则会干扰 MVC。
  • 运行项目。应该可以工作。
  • 关于c# - OwinStartup 类中的 Configuration 方法如何以及何时被调用/执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41060249/

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