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
Post a Comment