Note that there are some explanatory texts on larger screens.

plurals
  1. POHttpLisenter Start method fails on windows service start
    text
    copied!<p>I've been fooling around with the HttpListenter stuff found at: </p> <p><a href="http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/system.net.httplistener.aspx</a></p> <p>It works great on a standard console app, but I'm trying to get it working as a windows service. Application Logs show that when the service starts up, it fails on the HttpListener.Start() method. I'm pretty stumped as to why this might happen.</p> <p>Here's the class (proof of concept quality here :)</p> <pre><code>public class Server { public Server() { var thread = new Thread((Start)); thread.Start(); } public static void Start() { while(Listen()) { } } private static bool Listen() { var prefixes = new[] {"http://192.168.0.7/"}; if (!HttpListener.IsSupported) { Console.WriteLine ("Windows XP SP2 or Server 2003 is required to use the HttpListener class."); return false; } // URI prefixes are required, // for example "http://contoso.com:8080/index/". if (prefixes == null || prefixes.Length == 0) throw new ArgumentException("prefixes"); // Create a listener. HttpListener listener = new HttpListener(); // Add the prefixes. foreach (string s in prefixes) { listener.Prefixes.Add(s); } listener.Start(); //THIS FAILS IN WINDOWS SERVICE AS LOCAL SYSTEM //Console.WriteLine("Listening..."); //// Note: The GetContext method blocks while waiting for a request. //HttpListenerContext context = listener.GetContext(); //HttpListenerRequest request = context.Request; //// Obtain a response object. //HttpListenerResponse response = context.Response; //// Construct a response. //string responseString = "&lt;HTML&gt;&lt;BODY&gt; " + DateTime.Now + "&lt;/BODY&gt;&lt;/HTML&gt;"; //byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseString); //// Get a response stream and write the response to it. //response.ContentLength64 = buffer.Length; //System.IO.Stream output = response.OutputStream; //output.Write(buffer,0,buffer.Length); //// You must close the output stream. //output.Close(); //listener.Stop(); return true; } } </code></pre> <p>Relavent Logs: Error:</p> <pre><code>Application: Stout.Workers.Service.exe Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: System.Net.HttpListenerException Stack: at System.Net.HttpListener.Start() at Stout.Workers.Service.Server.Listen() at Stout.Workers.Service.Server.Start() at System.Threading.ThreadHelper.ThreadStart_Context(System.Object) at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) at System.Threading.ThreadHelper.ThreadStart() </code></pre> <p>Error:</p> <pre><code>Faulting application name: Stout.Workers.Service.exe, version: 0.0.0.0, time stamp: 0x50d0cd99 Faulting module name: KERNELBASE.dll, version: 6.2.9200.16451, time stamp: 0x50988950 Exception code: 0xe0434352 Fault offset: 0x00014b32 Faulting process id: 0x1e70 Faulting application start time: 0x01cddd5bb3e8500b Faulting application path: C:\Users\Chad\Dropbox\Personal\Projects\Stout\Stout\Workers\Service\bin\Debug\Stout.Workers.Service.exe Faulting module path: C:\Windows\SYSTEM32\KERNELBASE.dll Report Id: f1aa9986-494e-11e2-be9b-685d43b0551c Faulting package full name: Faulting package-relative application ID: </code></pre> <p>Info:</p> <pre><code>Fault bucket , type 0 Event Name: CLR20r3 Response: Not available Cab Id: 0 Problem signature: P1: stout.workers.service.exe P2: 0.0.0.0 P3: 50d0cd99 P4: System P5: 4.0.30319.18016 P6: 505702c9 P7: 206c P8: 5c P9: System.Net.HttpListenerException P10: </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload