मैं एक विंडोज सेवा बनाना चाहता था जो स्वयं-होस्ट एएसपी.नेट वेब एपीआई के माध्यम से कुछ सेवाएं प्रदान करता है। साथ ही, मैं ग्राहकों को स्व-होस्ट सिग्नलआर के माध्यम से कुछ बदलावों के बारे में सूचित करना चाहता था। मैंने सोचा कि एएसपी.NET सिग्नलर अधिसूचना केंद्र के लिए एकदम सही समाधान होगा।सेल्फ-होस्ट एएसपी.नेट वेब एपीआई और सेल्फ-होस्ट सिग्नलआर एक साथ विंडोज सर्विस एप्लिकेशन
जब मैं दोनों सेवा चलाता हूं तो वे एक साथ काम नहीं करते हैं। अगर मैं सिग्नलआर हटा देता हूं, तो स्व-होस्ट एपीआई पूरी तरह से काम करना शुरू कर देता है। दूसरी तरफ भी: विंडोज़ सेवा को हटाएं, और सिग्नलआर पूरी तरह से काम करें।
मुझे यकीन नहीं है कि मेरी समस्या क्या है, क्या विंडोज़ सेवा होना संभव है जो एक ही समय में एएसपीनेट वेब एपीआई और सिग्नलआर के लिए स्वयं-होस्ट किया गया है?
मैंने दोनों एक ही और अलग बंदरगाहों पर कोशिश की लेकिन यह काम नहीं करता है।
और दूसरा सवाल, क्या दोनों एक ही बंदरगाह पर होना संभव है?
मेरे इंस्टॉल किए गए पैकेज: - ApiControllers और उसी URI पर Signalr हब
Microsoft.AspNet.WebApi.SelfHost
Microsoft.AspNet.SignalR.SelfHost
Microsoft.AspNet.WebApi.Owin
Microsoft.Owin.Host.HttpListener
Microsoft.Owin.Hosting
Microsoft.Owin.Cors
मेरे कोड
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.SelfHost;
using Microsoft.AspNet.SignalR;
using Microsoft.Owin.Hosting;
using Owin;
using Microsoft.Owin.Cors;
using Microsoft.Owin;
[assembly: OwinStartup(typeof(WindowsService_HostAPI.Startup))]
namespace WindowsService_HostAPI
{
partial class SelfHostService : ServiceBase
{
IDisposable SignalR;
EventLog myLog = new EventLog();
private const string appId = "MYHUB";
public SelfHostService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
myLog.Source = "MY HUB ";
var config = new HttpSelfHostConfiguration("http://localhost:9090");
config.Routes.MapHttpRoute(
name: "API",
routeTemplate: "{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
HttpSelfHostServer server = new HttpSelfHostServer(config);
string CertLocation = "";
server.OpenAsync().Wait();
try
{
myLog.WriteEntry("Notification HUB Start ");
}
catch (Exception ex)
{
myLog.WriteEntry("Notification Failed TO Start : " + ex.Message + " |||| " + CertLocation);
}
// SignalR
string url = "http://localhost:9191";
SignalR = WebApp.Start(url);
}
protected override void OnStop()
{
// TODO: Add code here to perform any tear-down necessary to stop your service.
try
{
push.StopAllServices(true);
SignalR.Dispose();
}
catch (Exception ex)
{
myLog.WriteEntry("Notification Failed TO Stop : " + ex.Message);
}
}
}
class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
public class UserGroupNotification : Hub
{
public void Send(string UGID, string message)
{
Clients.All.addMessage(UGID, message);
}
}
}
http://www.codeproject.com/Articles/869223/ASP-NET-Web-Api-Create-a-Self-Hosted-:
यहाँ कैसे मैं अपने config में ऐसा है ओविन-आधारित-हम –