Grapevine 3.1 - '进程无法访问文件'

Posted

技术标签:

【中文标题】Grapevine 3.1 - \'进程无法访问文件\'【英文标题】:Grapevine 3.1 - 'The process cannot access the file'Grapevine 3.1 - '进程无法访问文件' 【发布时间】:2016-12-17 11:11:59 【问题描述】:

我有一个利用 Grapevine 在 Program 类中启动服务器的解决方案。 但是由于某种原因,一旦我启动程序,它就会在调用server.Start() 时崩溃。 解决方案的其他部分目前没有运行,所以我不知道这是怎么发生的?

在 Windows 10 上以管理员身份在 Visual Studio 15 中运行。

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();
        
    

错误和堆栈跟踪:

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:

【问题讨论】:

虽然这根本无法解决您的问题,但我建议您更新到最新版本的 Grapevine 4.x。那里有好东西!感谢您使用 Grapevine。 嗨 Scott,问题是我必须使用 3.1。只是我在这种情况下被处理的手 【参考方案1】:

所以我弄清楚了问题所在。 我将 Grapevine 设置为使用端口80

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

问题是我的机器上有另一个服务使用此端口,我将其更改为使用8080,现在它工作正常。

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

【讨论】:

以上是关于Grapevine 3.1 - '进程无法访问文件'的主要内容,如果未能解决你的问题,请参考以下文章

Grapevine REST 服务器,我无法通过 IP 或主机名从其他 PC 访问

通过网络访问 Grapevine REST 服务器

Grapevine 远程连接错误请求 - 主机名无效

如何在 Ggrapevine 3.1 中使用 SSL

无法在简单的 Grapevine 服务器示例中加载类型 HttpListener

无法从同一网络上的另一台计算机连接到 Grapevine