मैं सेटअप एक सांत्वना अनुप्रयोग है कि सिर्फ एक पाश चलाता है और संदेश सिग्नल आर का उपयोग कर ग्राहक कि सुन रहा है एक कोणीय अनुप्रयोग है उत्सर्जन करता है।SignalR त्रुटि जब परीक्षण के खिलाफ Vagrant वीएम
जब मैं स्थानीय रूप से चलाने के लिए, (दोनों कंसोल आवेदन और कोणीय साइट) यह ठीक काम करता है। हालांकि, जब मैं अपने Vagrant वी एम (उबंटू होस्ट) में मेरे कंसोल एप्लिकेशन को चलाने के लिए, तो मैं एक सब भी परिचित त्रुटि संदेश जैसे कि निम्न मिलती है:
GET http://localhost:12345/signalr/negotiate?clientProtocol=1.5&userId=12345&connectionData=%5B%7B%22
name%22%3A%22testem
itter%22%7D%5D&_=1446565284280 500 (Internal Server Error)
मैंने पहले यह करने के लिए इसी तरह के मुद्दों में भाग लिया है (शायद इस
namespace test
{
public class Program
{
public static void Main(string[] args)
{
try
{
using (WebApp.Start<EmmitStartup>("http://*:12345"))
{
Console.Out.WriteLine("Emmit started on http://*:12345");
IEmitterFactory factory = new EmitterFactory();
while (true)
{
Thread.Sleep(5000);
ITestEmitter emitter = factory.Create((ctx) =>
{
return new TestEmitter(ctx);
});
emitter.SayHello();
emitter.Echo("Hello World:" + DateTime.Now);
}
}
}
catch (Exception e)
{
Console.Out.WriteLine(e.Message);
Console.Out.WriteLine(e.StackTrace);
Console.ReadLine();
}
}
}
public class TestEmitter:Emitter,ITestEmitter
{
public TestEmitter(IEmitterContext emitterContext) : base(emitterContext)
{
}
public TestEmitter(IEmitterContext emitterContext, EmitterModel model) : base(emitterContext, model)
{
}
public TestEmitter(IDictionary<string, object> model) : base(model)
{
}
public void SayHello()
{
EmitterContext.Clients.All.onSayHello();
}
public void Echo(string message)
{
EmitterContext.Clients.All.onEcho(message);
}
}
public interface ITestEmitter
{
void SayHello();
void Echo(string message);
}
public class EmmitStartup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
GlobalHost.HubPipeline.AddModule(new ErrorHandlingPipelineModule());
var config = new HubConfiguration()
{
EnableDetailedErrors = true,
EnableJavaScriptProxies = true,
EnableJSONP = true
};
map.RunSignalR(config);
});
}
}
}
- कोई अपवाद या त्रुटि लॉग सर्वर पर फेंका जा रही हैं: सटीक एक) इसलिए यहाँ कुछ प्रारंभिक जानकारी के
कोड मैं ऐसा दिखाई देता है।
- SignalR
- में मैं सक्षम किया है CORS मैं दोनों
http://*:12345
औरhttp://localhost:12345
औरhttp://0.0.0.0:12345
Emmit
पुस्तकालय बस वाक्यात्मक चीनी का उपयोग करने की कोशिश की औरSignalR
के माध्यम से प्रत्यक्ष पास बनाता है (मैं सीधे SignalR साथ ही सटीक कोशिश की है।- मैं सक्षम करने के विभिन्न संयोजनों की कोशिश की है/
EnableJSONP
- अक्षम करने मैं जानता हूँ कि SignalR काम करने और वी एम के माध्यम से सुलभ है क्योंकि मैं
http://localhost:12345/signalr/hubs
हिट कर सकते हैं और यह प्रॉक्सी फ़ाइल को दर्शाता है। - मैं बंदरगाह के लिए Vagrant वीएम करने के लिए सेटअप बंदरगाह fowarding है
12345
- मैं
sudo ufw disable
ग्राहक के लिए कोड ऐसा दिखाई देता साथ वीएम होस्ट (उबंटू) पर विकलांग फ़ायरवॉल है:
var emmitProxy = null;
Emmit.createProxy({
emitter:'testEmitter',
path:'http://localhost:12345/signalr',
listeners:{
'onSayHello':function(){
$log.info('onSayHello triggered')
},
'onEcho':function(message){
$log.info(message);
}
},
onError:function(){
//an error occured
$log.error('testEmitter:onError');
},
onDisconnected:function(){
//proxy was disconnected
$log.debug('testEmitter:onDisconnected');
},
queryParams:{
userId:'12345' //optional
}
}).then(function(newProxy){
emmitProxy = newProxy;
});
अद्यतन
मैंने लॉगिंग सक्षम किया और यहां आउटपुट है। किसी अन्य व्यक्ति की सिफारिश करने से पहले मैं सीओआरएस सक्षम करता हूं, मुझे नहीं लगता कि सीओआरएस मुद्दा है, मुझे लगता है कि यह किसी अन्य समस्या का कैस्केडिंग प्रभाव है।
अद्यतन
मैं निम्नलिखित परिणाम के साथ कई वातावरण में इस भाग गया है Vagrant वी एम (उबंटू) पर डोकर कंटेनर में
- दौड़ा - त्रुटि होती है
- सीधे वग्रेंट वीएम (उबंटू) पर दौड़ें - त्रुटि ओसीसीआरएस
- परिनियोजन डोकर कंटेनर Tutum करने के लिए घ - त्रुटि होती है
- विंडोज पर दृश्य स्टूडियो के माध्यम से सीधे Ran - सब कुछ काम करता है
- (स्पष्ट रूप से मोनो पर) मैक OSX पर सीधे Ran - सब कुछ काम करता है
मैं निम्नलिखित IHubPipelineModule
जोड़ लिया है
public class ErrorHandlingPipelineModule:HubPipelineModule
{
public override Func<HubDescriptor, IRequest, bool> BuildAuthorizeConnect (Func<HubDescriptor, IRequest, bool> authorizeConnect)
{
try
{
Console.Out.WriteLine ("BuildAuthorizeConnect");
return base.BuildAuthorizeConnect (authorizeConnect);
}
catch (Exception exception)
{
Console.Out.WriteLine ("AuthorizeConnect Failure");
Console.Out.WriteLine(exception.Message);
}
return base.BuildAuthorizeConnect(authorizeConnect);
}
protected override void OnAfterDisconnect (IHub hub, bool stopCalled)
{
try
{
Console.Out.WriteLine ("OnAfterDisconnect");
base.OnAfterDisconnect (hub, stopCalled);
Console.Out.WriteLine ("After OnAfterDisconnect");
}
catch (Exception exception)
{
Console.Out.WriteLine ("AfterDisconnect Failure");
Console.Out.WriteLine(exception.Message);
}
}
protected override bool OnBeforeDisconnect (IHub hub, bool stopCalled)
{
try
{
Console.Out.WriteLine ("OnBeforeDisconnect");
return base.OnBeforeDisconnect (hub, stopCalled);
}
catch (Exception exception)
{
Console.Out.WriteLine ("BeforeDisconnect Failure");
Console.Out.WriteLine(exception.Message);
}
return base.OnBeforeDisconnect (hub, stopCalled);
}
public override Func<IHub, System.Threading.Tasks.Task> BuildConnect(Func<IHub, System.Threading.Tasks.Task> connect)
{
try
{
Console.Out.WriteLine("BuildConnect");
return base.BuildConnect(connect);
}
catch (Exception exception)
{
Console.Out.WriteLine(exception.Message);
}
return base.BuildConnect(connect);
}
protected override void OnAfterConnect(IHub hub)
{
try
{
Console.Out.WriteLine("OnAfterConnect");
base.OnAfterConnect(hub);
}
catch (Exception exception)
{
Console.Out.WriteLine ("OnAfterConnect Failure");
Console.Out.WriteLine(exception.Message);
}
}
protected override bool OnBeforeConnect(IHub hub)
{
try
{
Console.Out.WriteLine("OnBeforeConnect");
return base.OnBeforeConnect(hub);
}
catch (Exception exception)
{
Console.Out.WriteLine ("OnBeforeConnect Failure");
Console.Out.WriteLine(exception.Message);
}
return base.OnBeforeConnect (hub);
}
}
और जब मैं अपने लॉग की जांच, केवल लॉग बाहर मुद्रित कर रहे हैं निम्नलिखित हैं:
BuildConnect
BuildAuthorizeConnect
अद्यतन मैं या यकीन है कि अगर यह प्रासंगिक होगा नहीं कर रहा हूँ मैं इसे कैसे चूक गए हों, लेकिन मैं 500 से प्रतिक्रिया की जाँच की और यह Here
ऐसा लगता है कि करने के लिए तैनात किया है जैसे कि यह यह है दिखाया जा रहा है Improperly protected user's key pairs in '/root/.config/.mono/keypairs'.
से संबंधित भी, मुझे यकीन नहीं है कि इस लिंक में संवेदनशील जानकारी है या नहीं। अगर कोई मुझे बताए तो मुझे बता सकता है, तो मैं इसकी सराहना करता हूं।
मैं अब तक अनुसंधान का एक न्यूनतम राशि से किया था और जब मैं बातचीत के अनुरोध के लिए नेटवर्क टैब की जाँच भर SignalR.Owin works under Windows but returns 500 for Mono on Linux
आया, मैं निम्नलिखित
** हेडर मिल ** रिमोट पता: 127.0 .0.1: 12345 अनुरोध URL: http://localhost:12345/signalr/negotiate?clientProtocol=1.5&userId=12345&connectionData=%5B%7B%22name%22%3A%22testemitter%22%7D%5D&_=1446964166640 अनुरोध विधि: प्राप्त स्थिति कोड: 500 आंतरिक सर्वर त्रुटि
HTTP/1.1 500 Internal Server Error
Access-Control-Allow-Origin: http://localhost:8100
Access-Control-Allow-Credentials: true
X-Content-Type-Options: nosniff
Content-Type: text/html
Server: Mono-HTTPAPI/1.0
Date: Sun, 08 Nov 2015 06:30:28 GMT
Connection: close
Transfer-Encoding: chunked
Accept:text/plain, */*; q=0.01
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:no-cache
Connection:keep-alive
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Cookie:JSESSIONID.ae4b31f4=aqpz31hevinaauwftyijure; JSESSIONID.26c95422=1m32u58exuvjz5jrojszqziqh; JSESSIONID.3fd19426=iv9fawaej3nt14yzcruj45si5; JSESSIONID.8868ba42=1gh4w06alx8ehuuj1adr5w8y8; JSESSIONID.947cfb91=nyxfrp6u0pny1sl8gwlouprh4; screenResolution=1280x800
Host:localhost:12345
Origin:http://localhost:8100
Pragma:no-cache
Referer:http://localhost:8100/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36
यदि यह सीओआरएस था तो यह बिल्कुल काम नहीं करेगा?जैसा कि मैंने उल्लेख किया है कि यह स्थानीय रूप से पूरी तरह से ठीक काम करता है और यह विभिन्न बंदरगाहों से आ रहा है। – TheJediCowboy
क्या आपने HTTP शीर्षलेख सत्यापित किए हैं? –
मैं वास्तव में इसे अभी खींच रहा हूं। अन्य सामान में लपेटा गया था। – TheJediCowboy