System.Net.Sockets.SocketException:无法解析Mono上的自托管Nancy应用程序
本文关键字:应用程序 Nancy Mono SocketException Sockets Net System | 更新日期: 2023-09-27 18:02:59
我在我的Program.cs中有以下代码来启动Mono 4.2.2上的自托管nancy应用。
public static void Main (string[] args)
{
var uri = "";
if(ReflectConfiguration.CurrentEnviroment == ReflectConfiguration.Environments.Production || ReflectConfiguration.CurrentEnviroment == ReflectConfiguration.Environments.Staging)
{
uri = string.Format("http://localhost:{0}", Environment.GetEnvironmentVariable("PORT").ToString());
}
else if(ReflectConfiguration.CurrentEnviroment == ReflectConfiguration.Environments.Development)
{
uri = string.Format("http://localhost:8888");
}
Console.WriteLine("Starting Reflect.Web application on " + uri);
// initialize an instance of NancyHost
var host = new NancyHost(new Uri(uri));
host.Start(); // start hosting
// check if we're running on mono
if (Type.GetType("Mono.Runtime") != null)
{
// on mono, processes will usually run as daemons - this allows you to listen
// for termination signals (ctrl+c, shutdown, etc) and finalize correctly
UnixSignal.WaitAny(new[] {
new UnixSignal(Signum.SIGINT),
new UnixSignal(Signum.SIGTERM),
new UnixSignal(Signum.SIGQUIT),
new UnixSignal(Signum.SIGHUP)
});
}
else
{
Console.ReadLine();
}
host.Stop(); // stop hosting
}
这段代码运行了好几个月。刚才开始出现这个错误:
System.Net.Sockets.SocketException: Could not resolve host '+'
:
host.Start(); // start hosting
我不知道我最近对任何依赖项做了任何更新。
以前有人遇到过这个吗?为什么是"+"号呢?
+
可以是。net的HttpListener(不确定mono)用来确定应该托管应用程序的位置的"URI前缀字符串"的一部分,查看HttpListener的class注释了解更多信息:
类似地,要指定HttpListener接受发送到端口的所有请求,请将host元素替换为"+"字符"https://+:8080"。"*"answers"+"字符可以出现在包含路径的前缀中。
我猜你的代码正在检查ReflectConfiguration.CurrentEnviroment
,而错过了你选择的情况。
没有配置/存在的环境吗?或者您不是在生产、登台或开发部门工作?当你创建一个新的URI
对象时,uri
的值是多少?