2016-08-10 2 views
1

У меня есть решение, которое использует Grapevine для запуска сервера в классе Program. По какой-то причине, как только я запускаю программу, она вылетает, когда вызывается server.Start(). На данный момент никаких других частей решения не работает, поэтому я не знаю, как это могло произойти?Grapevine 3.1 - «Процесс не может получить доступ к файлу»

Запуск в Visual Studio 15, как администратор, на Windows, 10.

Program.cs

using System; 
using System.Threading; 
using Grapevine.Server; 
using QuantConnect.Logging; 

namespace QuantConnect.Services 
{ 
    class Program 
    { 
     /// <summary> 
     /// QuantConnect C# Services Server: 
     /// </summary> 
     static void Main(string[] args) 
     { 
      var server = new RESTServer 
      { 
       //Host = Configuration.Config.Get("grapevine-host"), 
       //Port = Configuration.Config.Get("grapevine-port") 
       Host = Configuration.Config.Get("grapevine-host", "localhost"), 
       Port = Configuration.Config.Get("grapevine-port", "80") 
      }; 

      Log.Trace(string.Format("Starting Server On {0}:{1}", server.Host, server.Port)); 
      server.Start(); // Exception occurs here 

      while (server.IsListening) 
      { 
       Thread.Sleep(300); 
      } 

      Log.Trace("Server stopped. Press key to continue..."); 
      Console.ReadLine(); 
     } 
    } 
} 

Ошибка и StackTrace:

An unhandled exception of type 'System.Net.HttpListenerException' occurred in Grapevine.dll

System.Net.HttpListenerException was unhandled 
    ErrorCode=32 
    HResult=-2147467259 
    Message=The process cannot access the file because it is being used by another process 
    NativeErrorCode=32 
    Source=System 
    StackTrace: 
     at System.Net.HttpListener.AddAllPrefixes() 
     at System.Net.HttpListener.Start() 
     at Grapevine.Server.RESTServer.Start() 
     at QuantConnect.Services.Program.Main(String[] args) in C:\Users\RichardsPC\Source\Repos\Lean\Services\Program.cs:line 29 
     at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args) 
     at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args) 
     at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 
     at System.Threading.ThreadHelper.ThreadStart_Context(Object state) 
     at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
     at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 
     at System.Threading.ThreadHelper.ThreadStart() 
    InnerException: 
+0

Хотя это не было бы решить проблему в целом, я рекомендовал бы обновить до последней версии виноградной лозы 4.x. Хорошие вещи там! И спасибо за использование Grapevine. –

+0

Привет, Скотт, вопрос был мне пришлось использовать 3.1. Только рука, которую я получил в этом сценарии –

ответ

1

Так я понял, что проблема была. Я установил Grapevine для использования порта 80.

Port = Configuration.Config.Get("grapevine-port", "80")

Проблема в том, что там был еще один сервис, на моей машине, используя этот порт, я изменил его использовать 8080 и теперь он работает нормально.

Port = Configuration.Config.Get("grapevine-port", "8080")