2015-08-11 14 views
8

sağlamak benim web.config aşağıdakileri deneyin:Owin web.config'de başlangıç ​​sınıfı (otomatik başlatma keşif)

<appSettings> 
    <add key="owin:AutomaticAppStartup" value="false" /> 
    <add key="owin:appStartup" value="MyNamespace.MyStartupClass" /> 
</appSettings> 

Bu documentation doğru otomatik başlatma algılama devre dışı bırakılmalıdır anlamak durumunda. Bu yüzden bir başlangıç ​​niteliğine ihtiyacım yok. Owin başlamaz gibi

Maalesef görünüyor. (Hatası alıyorum çünkü bu bkz. HTTP Error 403.14 - Forbidden Ben dizin dosyasına istekleri işlemek için bir denetleyici kullanın.)

Ben <add key="owin:AutomaticAppStartup" value="true" /> kullanmak ve başlatma özelliğini [assembly: OwinStartup(typeof(MyStartupClass))] sonra uygulama başlatma beklendiği gelmez olarak eklerseniz.

Yani soru neden? Sorunu çözmek için ne yapabilirim? Ben Owin 3.0.0.0 kullanıyorum

Güncelleme:

Bu benim başlangıç ​​sınıfı (ilgili parçalarla minified sürümü) gibi görünüyor:

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. 
     } 
    } 
} 

o

türetilmiştir
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());   
     } 
    } 
} 
+0

'MyStartupClass' sınıfını gönderir misiniz? –

+0

Sınıfımın hangi bölümleri alakalı olur? İlişkisiz bir sürü şey içeren oldukça büyüktür. Başlangıç ​​sınıfımın bir sınıf kitaplığında bulunan başka bir başlangıç ​​sınıfından türetildiğini belirtmek gerekir. – Sjoerd222888

+0

Alakasız parçaları kaldırın Sadece sınıf yapınızı ve anahatlarınızı görmek istiyorum. –

cevap

17

Basitçe kaldırmak web.config dosyasında kod satırı:

<add key="owin:AutomaticAppStartup" value="false" /> 

Sizin web.config dosya artık şu şekilde bakmalıyız:

<appSettings> 
    <add key="owin:appStartup" value="MyNamespace.MyStartupClass" /> 
</appSettings> 

sadece owin:appStartup anahtarını ekleyerek başlangıç ​​niteliğini gerekmez.

+0

Yapılandırma yönteminin adını da yeniden adlandırmak mümkün mü? ..? ve web.config içinde nasıl kurulur? –

+2

@RahulUttarkar evet mümkündür. “AppSetting” anahtarının değerinde sınıf adından sonra yöntem adınızı yazmanız yeterlidir. i.e. 'value =" MyNamespace.MyStartupClass.MyMethod " –

İlgili konular