मैं निनजेस के साथ ओविन स्वयं होस्टेड वेबएपीआई के साथ एक विंडोज सेवा बनाने की कोशिश कर रहा हूं। मुझे यह काम करने के लिए मिला लेकिन मुझे system.web का संदर्भ जोड़ना पड़ा, जो गलत लगता है।निनजे ओविनहोस्ट का उपयोग कर ओविन स्वयं होस्ट ऐप को system.web की आवश्यकता है?
प्रकार 'System.Web.Routing.RouteCollection' एक विधानसभा संदर्भित नहीं है में परिभाषित किया गया है: system.web के लिए एक संदर्भ के बिना मैं इन त्रुटियों को संकलन मिला है। आपको असेंबली 'सिस्टम.Web, संस्करण = 4.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = b03f5f7f11d50a3a' का संदर्भ जोड़ना होगा।
टाइप 'System.Web.Routing.Route' को एक असेंबली में परिभाषित किया गया है जो संदर्भित नहीं है। आपको असेंबली 'System.Web, संस्करण = 4.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = b03f5f7f11d50a3a' का संदर्भ जोड़ना होगा।
त्रुटियों दिखाया के बाद मैं इस लेख Setting up a OWIN WebApi application
मैं भी Ninject काम करने के लिए संस्करण 2.1.0 के लिए Microsoft.Owin विवश किया था के अनुसार Ninject गयी। सेवा स्टार्टअप के दौरान निनजेक ओविन 2.1.0 की तलाश में है। यदि आप माइक्रोसॉफ्ट पर नवीनतम हैं। ओविन यह 3.0 पर रोल करेगा।
तीन मुख्य NuGet पैकेज मैं उपयोग कर रहा हूँ कर रहे हैं:
Microsoft.AspNet.WebApi.OwinSelfHost
Ninject.Web.Common.OwinHost
Ninject.Web.WebApi.OwinHost
यहाँ मेरी सभी पैकेज (Microsoft.Owin पर विवश नोटिस)
0,123,516 है<package id="Microsoft.AspNet.WebApi" version="5.2.2" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.2" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.2" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.Owin" version="5.2.2" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.OwinSelfHost" version="5.2.2" targetFramework="net45" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.2" targetFramework="net45" />
<package id="Microsoft.Owin" version="2.1.0" targetFramework="net45" allowedVersions="(,2.1]" />
<package id="Microsoft.Owin.Host.HttpListener" version="3.0.0" targetFramework="net45" />
<package id="Microsoft.Owin.Hosting" version="2.0.2" targetFramework="net45" />
<package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" />
<package id="Ninject" version="3.2.2.0" targetFramework="net45" />
<package id="Ninject.Extensions.ContextPreservation" version="3.2.0.0" targetFramework="net45" />
<package id="Ninject.Extensions.NamedScope" version="3.2.0.0" targetFramework="net45" />
<package id="Ninject.Web.Common" version="3.2.2.0" targetFramework="net45" />
<package id="Ninject.Web.Common.OwinHost" version="3.2.2.0" targetFramework="net45" />
<package id="Ninject.Web.WebApi" version="3.2.1.0" targetFramework="net45" />
<package id="Ninject.Web.WebApi.OwinHost" version="3.2.1.0" targetFramework="net45" />
<package id="Owin" version="1.0" targetFramework="net45" />
यहाँ खिड़कियों सेवा के Program.cs लग रहा है
तरहusing Microsoft.Owin.Hosting;
using Ninject;
using Ninject.Web.Common.OwinHost;
using Ninject.Web.WebApi.OwinHost;
using Owin;
using System.Reflection;
using System.ServiceProcess;
using System.Web.Http;
namespace ServiceExample
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
using (WebApp.Start<Startup>("http://localhost:12345"))
{
ServiceBase.Run(ServicesToRun);
}
}
public class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureWebAPI(app);
}
private void ConfigureWebAPI(IAppBuilder app)
{
var config = new HttpConfiguration();
config.Routes.MapHttpRoute(
"DefaultApi",
"api/{controller}/{id}",
new {id = RouteParameter.Optional});
app.UseNinjectMiddleware(CreateKernel).UseNinjectWebApi(config);
}
private static StandardKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Load(Assembly.GetExecutingAssembly());
return kernel;
}
}
}
}
मुझे आपके द्वारा सूचीबद्ध किए गए कार्यों के अलावा, इन्हें विंडोज़ सेवा के रूप में (.NET 4.5.1) बनाने के लिए इन 3 की आवश्यकता है: "माइक्रोसॉफ्ट.एस्पनेट.एबएपीआई.ऑविनसेल्फहोस्ट" "माइक्रोसॉफ्ट.ऑविन.होस्ट.एचटीपी लिस्टनर " " माइक्रोसॉफ्ट.ऑविन.होस्टिंग " – HungryPipo
निनजेक्ट (एनयूजीईटी पैकेजों में से एक) जोड़ना संदर्भ को जोड़ना प्रतीत होता है जो इसे तोड़ने लगता है! सरल समाधान उस संदर्भ को हटाना है !! –
उपर्युक्त में जोड़ना: system.web को मैन्युअल रूप से संदर्भ जोड़ने से त्रुटि दूर हो जाती है और वर्तमान में System.Web.Http.WebHost के संदर्भ को हटाने के बजाय इस दृष्टिकोण के साथ जा रहा है (इस समय यह पूरी तरह स्पष्ट नहीं है संदर्भ अनावश्यक है)। –