provo a fare quanto segue nel mio web.config:Owin fornire classe di avvio nel web.config (nessuna scoperta avvio automatico)
<appSettings>
<add key="owin:AutomaticAppStartup" value="false" />
<add key="owin:appStartup" value="MyNamespace.MyStartupClass" />
</appSettings>
Se ho capito questo documentation rilevamento avvio correttamente automatica deve essere disattivata. Quindi non ho bisogno di un attributo di avvio.
Purtroppo sembra che OWIN non si avvia. (Vedo questo perché ottengo l'errore:. HTTP Error 403.14 - Forbidden
io uso un controller per gestire le richieste al file di indice.)
se uso <add key="owin:AutomaticAppStartup" value="true" />
e aggiungere l'attributo di avvio [assembly: OwinStartup(typeof(MyStartupClass))]
quindi l'applicazione non avvio come previsto.
Quindi la domanda è: perché? Cosa posso fare per risolvere il problema?
Sto usando OWIN 3.0.0.0
Aggiornamento:
Questo è come la mia classe di avvio si presenta come (versione minified con parti rilevanti):
using System.Web.Http;
using Microsoft.AspNet.SignalR;
using Microsoft.Owin;
using Owin;
using MyOtherNamespace;
namespace MyNamespace
{
public class MyOnlineStartup : MyOtherStartup
{
public new void Configuration(IAppBuilder app)
{
base.Configuration(app); //Call base method! This is important because otherwise ther serilization will not be correct
HttpConfiguration config = CreateRouting();
config.Routes.MapHttpRoute("exampleAppNone", "", new { controller = "MyIndex" }, null, null);
config.Routes.MapHttpRoute("exampleAppIndex", "index.html", new { controller = "MyIndex" }, null, null);
app.UseWebApi(config); // Use the WebAPI technology.
}
}
}
deriva dal
using System.Linq;
using System.Web.Http;
using Microsoft.AspNet.SignalR;
using Newtonsoft.Json;
using Owin;
namespace MyOtherNamespace
{
public class MyOtherStartup
{
protected static HttpConfiguration CreateMyRouting()
{
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
"myIndex",
"my/",
new
{
controller = "MyIndex"
},
null,
null
);
config.Routes.MapHttpRoute(
"myIndex2",
"my/index.html",
new
{
controller = "MyIndex"
},
null,
null
);
var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes.FirstOrDefault(t => t.MediaType == "application/xml");
config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
config.Formatters.JsonFormatter.SerializerSettings.TypeNameHandling = TypeNameHandling.Auto
return config;
}
public void Configuration(IAppBuilder app)
{
JsonSerializer serializer = Serialization.ClientJsonSerializer();
serializer.ContractResolver = new MySerializationContractResolver(false);
GlobalHost.DependencyResolver.Register(typeof(JsonSerializer),() => serializer);
app.MapSignalR("/" + MyRequestHandler.MySignalRPath, new HubConfiguration());
}
}
}
Puoi inviare la classe 'MyStartupClass'? –
Quali parti della mia classe sarebbero rilevanti? È abbastanza grande che contiene molte cose che non sono correlate. Vale la pena notare che la mia classe di avvio è derivata da un'altra classe di avvio che risiede in una libreria di classi. – Sjoerd222888
Rimuovi parti irrilevanti Voglio solo vedere la struttura e il contorno della tua classe. –