2013-01-13 6 views
9

BenÖz barındırma web Api hizmeti Ben alacak ben</p> <pre><code>http://localhost:8080/api/*(some-controller)* </code></pre> <p>çalıştığınızda

namespace MascoteAquarium.Desktop 
{ 
    static class Program 
    { 
     /// <summary> 
     /// The main entry point for the application. 
     /// </summary> 
     [STAThread] 
     static void Main() 
     { 
      var config = new HttpSelfHostConfiguration("http://localhost:8080"); 
      config.Routes.MapHttpRoute(
       "DefaultApi", "api/{controller}/id", new { id = RouteParameter.Optional }); 

      using (HttpSelfHostServer server = new HttpSelfHostServer(config)) 
      { 
       server.OpenAsync().Wait(); 
      } 

      Application.EnableVisualStyles(); 
      Application.SetCompatibleTextRenderingDefault(false); 
      Application.Run(new frmMainMenu()); 
     } 
    } 
} 

aşağıdaki kodu kullanarak bir windows formları uygulama içinde bir Web Api hizmetini barındırmak kendini çalışıyorum Forms NullReferenceExceptionSystem.Web.Http.SelfHost.HttpSelfHostServer.ProcessRequestContext (ChannelContext channelContext, RequestContext requestContext)

Birisi neler olduğunu biliyor mu? Bir Win Forms uygulamasında kendini barındırmak mümkün mü?

+0

sorunu çözmek için yönetmek mi? – Osi

cevap

1
  1. aksi halde kendi kendini konak bir port açmak için izin verilmeyecek, (eğer ayıklananları WinForm app çalıştırırsanız veya VS) (Admin) yükseltilmiş ayrıcalıklarla WinForms uygulamayı çalıştırmak gerekir.

  2. zaten

8

sorun HttpSelfHostServer nesne kaybolursa olmasıdır başka hiçbir uygulama portu 8080 çalıştığından emin olun sadece içerir Application.Run (...) önce Programınızı çalıştıran ana olay döngüsü. using açıklamada imha yöntem böylece karşılaştığınız NullReferenceException sonuçlanan isteklerinin yanıtlanması için kullanılamaz hale sunucu bu durumda, nesne için çağrılan emin kılar.

istisna düzeltmek için, kod aşağıdaki gibi görünmelidir:

... 
using (HttpSelfHostServer server = new HttpSelfHostServer(config)) 
{ 
    server.OpenAsync().Wait(); 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new frmMainMenu()); 
} 
... 
İlgili konular