c# - ASP.NET MVC OWIN and SignalR - two Startup.cs files -


i have problem project.

i use asp.net mvc asp.net identity 2.0 authentication , added signalr project have 2 startup.cs files:

first 1 mvc in root

[assembly: owinstartupattribute(typeof(mcweb_3sr.startup))] namespace mcweb_3sr {     public partial class startup     {         public void configuration(iappbuilder app)         {             configureauth(app);          }     } } 

and signalr 1 in appcode folder

[assembly: owinstartup(typeof(signalrchat.startup))] namespace signalrchat {     public class startup     {         public void configuration(iappbuilder app)         {              var heartbeat = globalhost.dependencyresolver.resolve<itransportheartbeat>();              var monitor = new presencemonitor(heartbeat);             monitor.startmonitoring();               // connection or hub wire , configuration should go here             app.mapsignalr();         }     } } 

but following error

the following errors occurred while attempting load app. - owinstartup attribute discovered in assembly 'mcweb-3sr' referencing startup type 'mcweb_3sr.startup' conflicts attribute in assembly 'app_code.hszoxs_z' referencing startup type 'signalrchat.chatstartup' because have same friendlyname ''. remove or rename 1 of attributes, or reference desired type directly. disable owin startup discovery, add appsetting owin:automaticappstartup value of "false" in web.config. specify owin startup assembly, class, or method, add appsetting owin:appstartup qualified startup class or configuration method name in web.config.

i tried adding

[assembly: owinstartupattribute("productionconfiguration.st", typeof(mcweb_3sr.startup))] 

to first one, page runs authentication wont work.

how can have both of them run ?

update

using system; using microsoft.aspnet.identity; using microsoft.aspnet.identity.owin; using microsoft.owin; using microsoft.owin.security.cookies; using microsoft.owin.security.google; using owin; using mcweb_3sr.models;  namespace mcweb_3sr {     public partial class startup     {         // more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?linkid=301864         public void configureauth(iappbuilder app)         {             // configure db context, user manager , signin manager use single instance per request             app.createperowincontext(applicationdbcontext.create);             app.createperowincontext<applicationusermanager>(applicationusermanager.create);             app.createperowincontext<applicationsigninmanager>(applicationsigninmanager.create);              // enable application use cookie store information signed in user             // , use cookie temporarily store information user logging in third party login provider             // configure sign in cookie             app.usecookieauthentication(new cookieauthenticationoptions             {                 authenticationtype = defaultauthenticationtypes.applicationcookie,                 loginpath = new pathstring("/account/login"),                 provider = new cookieauthenticationprovider                 {                     // enables application validate security stamp when user logs in.                     // security feature used when change password or add external login account.                       onvalidateidentity = securitystampvalidator.onvalidateidentity<applicationusermanager, applicationuser>(                         validateinterval: timespan.fromminutes(30),                         regenerateidentity: (manager, user) => user.generateuseridentityasync(manager))                 }             });                         app.useexternalsignincookie(defaultauthenticationtypes.externalcookie);              // enables application temporarily store user information when verifying second factor in two-factor authentication process.             app.usetwofactorsignincookie(defaultauthenticationtypes.twofactorcookie, timespan.fromminutes(5));              // enables application remember second login verification factor such phone or email.             // once check option, second step of verification during login process remembered on device logged in from.             // similar rememberme option when log in.             app.usetwofactorrememberbrowsercookie(defaultauthenticationtypes.twofactorrememberbrowsercookie);              // uncomment following lines enable logging in third party login providers             //app.usemicrosoftaccountauthentication(             //    clientid: "",             //    clientsecret: "");              //app.usetwitterauthentication(             //   consumerkey: "",             //   consumersecret: "");              //app.usefacebookauthentication(             //   appid: "",             //   appsecret: "");              //app.usegoogleauthentication(new googleoauth2authenticationoptions()             //{             //    clientid = "",             //    clientsecret = ""             //});         }     } } 

move signalr startup file app_start folder , rename startup.signalr.cs. should have content, note configure method has been renamed configuresignalr:

namespace mcweb_3sr {   public partial class startup   {     public void configuresignalr(iappbuilder app) {       var heartbeat = globalhost.dependencyresolver.resolve<itransportheartbeat>();         var monitor = new presencemonitor(heartbeat);        monitor.startmonitoring();          // connection or hub wire , configuration should go here        app.mapsignalr();     }   } } 

now in startup.cs file @ root of project, add configuresignalr(app) call right after configureauth(app):

[assembly: owinstartup(typeof(mcweb_3sr.startup))] namespace mcweb_3sr {   public partial class startup   {     public void configuration(iappbuilder app) {       configureauth(app);       configuresignalr(app);     }   } } 

as long of startup partial classes have same namespace, should work.


Comments