Comment et quand est-méthode de Configuration dans OwinStartup classe est appelée/exécuté?
Avant que je pose ma question, j'ai déjà passé par les postes suivants:
- Ne pouvez pas obtenir le OWIN de Démarrage de la classe à exécuter dans IIS Express après
renommage ASP.NET projet
fichier et tous les postes mentionnés dans la question. - OWIN Démarrage de Détection
- OwinStartupAttribute requis dans le web.config pour corriger l'Erreur de Serveur #884
- OWIN de Démarrage classe non
détecté
Voici mon projet de dossier de mise en page:
Actuellement, il n'existe pas de contrôleur ou de la vue. Juste le Owin Startup
fichier.
De démarrage.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>
J'ai la référence suivante dans le Bootstrapper
projet:
- Microsoft.Owin
- Microsoft.Owin.De l'hôte.SystemWeb
- Owin
- Système
- Système.Core
Mise à JOUR:
Oublié d'ajouter le message d'erreur:
Maintenant,
- POURQUOI est-il pas de travail?
- Qu'est-ce que l'étape-par-étape de l'ajout et l'utilisation d'un
Owin
classe dans un très de base du projet(comme un accès à
StartupHome/Index
)? - Comment et quand la méthode de Configuration dans
Owin Startup
classe est
appelé/exécuté?
Mise à JOUR: sur 10-Dec-2016
Vérifier la Project-Folder-Layout
. Dans Bootstrapper
projet, j'ai le fichier suivant:
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));
}
}
}
Maintenant, je veux exécuter IocConfig.RegisterDependencies()
dans OWIN Startup
classe. Je suis en train de faire using Bootstrapper
dans Startup
au top mais, il n'est pas de travail. Je veux dire que je suis incapable de référence IocConfig
dans Startup
. Comment résoudre ce problème?
OriginalL'auteur Vedant | 2016-12-09
Vous devez vous connecter pour publier un commentaire.
C'est un peu tard, mais j'ai trouvé la solution comment mettre OWIN Démarrage de classe dans un projet distinct. Tout ce que vous avez fait dans votre projet est correcte, vous devez seulement appliquer un changement dans les propriétés de votre programme d'Amorçage de projet. Cliquez-droit sur le programme d'Amorçage de projet, entrez propriétés, cliquez sur l'onglet Construire et de regarder pour le chemin de Sortie. Vous devriez voir la norme de patch de sortie bin\debug\ ce qui signifie que votre programme d'Amorçage dll de la terre dans ce dossier. Vous devez modifier ce dossier bin, où l'ensemble de votre application web est.
Par exemple, j'ai créé la solution la plus simple, avec deux projets, le premier est vide, web app, et la seconde est une bibliothèque avec OWIN de Démarrage de la classe. Dans les propriétés du deuxième projet, j'ai changé le chemin de la sortie de ..\OwinTest.Web\bin. Ce sera la cause, qu'après la construction toutes les dll de la terre dans un dossier. Vous pouvez maintenant exécuter votre application et OWIN de Démarrage devrait fonctionner à droite.
Ci-dessous est l'écran des paramètres de propriétés d'Amorçage de projet:
Honnêtement, je ne sais pas excatly, mais j'ai trouvé cette réponse sur une question à propos de ce qui est de l'amorçage: stackoverflow.com/a/1255796/3872681. Basé sur cette réponse, je pense, que l'amorçage dans les applications web, les moyens de chargement de tous les helper cadres, comme par exemple des conteneurs ou des Cio ASP.NET module d'Identité avant l'application démarre, OWIN est lui-même un bootstraper. Par conséquent, le projet, où vous avez déplacé OWIN fichier de démarrage est appelé programme d'amorçage, car il détient tous les OWIN modules, pas parce que tu bootstrap OWIN. Mais je ne suis pas 100% sûr à ce sujet.
OriginalL'auteur Roman Suska
install-package Microsoft.Owin.Host.SystemWeb
)Ici, je vais répondre à votre troisième question. Le démarrage de la classe est un point d'entrée de OWIN et est regardé automatiquement. Comme indiqué dans les docs officielles:
Notez que vous pouvez également choisir votre propre nom de Démarrage de classe, mais vous devez le configurer à l'aide des décorateurs ou des AppConfig. Comme indiqué ici:
https://www.asp.net/aspnet/overview/owin-and-katana/owin-startup-class-detection
C'est tout ce dont vous avez besoin pour une base de travail et de OWIN test:
Si vous souhaitez utiliser MVC (je suppose que par "Home/Index" vous voulez dire MVC), suivez ces étapes:
install-package Microsoft.AspNet.Mvc
).De la page d'hériter de WebViewPage. Tout devrait ressembler à ceci:
global.asax
à mettre en place des circuits. Clic droit sur le projet -> add -> New Item -> Global Classe d'Application.Ajouter les itinéraires définition de la méthode Application_Start:
Correct. Et pas seulement de Démarrage de classe, mais aussi OWIN de packages NuGet.
La couche de présentation doit contenir l'un des principaux web front-end avec OWIN et MVC. Toutes les autres affaires de la logique ou de la couche de données ou de l'infrastructure peut être un service distinct de la bibliothèque. Ces projets contiennent le code. À l'intérieur de la OWIN vous devez toujours appeler uniquement ce qui est nécessaire. Si seul OWIN middleware serait se compliquer lui-même - vous pouvez toujours mettre le code dans une classe séparée et d'utiliser seulement
app.Use<MyClass>()
à la place. La clé pour la réussite du projet est toujours de la simplicité et de nettoyer le code élégant. La séparation des préoccupations.Merci beaucoup pour votre temps et votre aide. Je ne l'apprécie. 🙂
Pas sûr. Vérifiez ceci: stackoverflow.com/questions/14115497/... aussi, considérez ceci: stackoverflow.com/questions/19781970/... et le dernier mais non le moindre - en utilisant de nouveaux ASP.NET de Base, il est intégré Cio qui semble la meilleure option dans votre cas. Bien que je ne suis pas sûr si vous pouvez l'utiliser de nouveau .NET de Base.
OriginalL'auteur Ivan Sivak