使用 mono 在 pi 上托管 asp.net owin 网页导致主机错误
using mono to host a asp.net owin webpage on the pi results in bad host
当我尝试将 owin asp.net 网站移植到 pi 时,(raspberry pi 模型 b)我最终得到了一个显示错误页面的网站:
Bad Request (Invalid host)
在圆周率上,我 运行 raspbian 气喘吁吁。我安装了单声道(版本 3.2.8)。
对于一个简单的控制台应用程序,mono 可以工作。
对于 Owin 网站,我在 visual studio 2015 年制作了一个控制台项目。
我向这个控制台应用程序添加了 nuget 包:
Microsoft.Owin
Microsoft.Owin.Diagnostics
Microsoft.Owin.Host.HttpListner
Microsoft.Owin.Hosting
之后我添加了一个 Owin 启动 class。在此 class 中,我添加了几行代码来显示当前 os":
public void Configuration(IAppBuilder app)
{
app.UseWelcomePage(new Microsoft.Owin.Diagnostics.WelcomePageOptions()
{
Path = new PathString("/welcome")
});
app.Run(context =>
{
context.Response.ContentType = "text/plain";
string output = string.Format(
"I'm running on {0} nFrom assembly {1}",
Environment.OSVersion,
System.Reflection.Assembly.GetEntryAssembly().FullName
);
return context.Response.WriteAsync(output);
});
}
现在我只需要在程序class中指定项目的基础url,id在主函数
中完成
string baseUrl = "http://localhost:5000";
using (WebApp.Start<Startup>(baseUrl))
{
Console.WriteLine("Press Enter to quit.");
Console.ReadKey();
}
使用此代码,我的项目在启动时会提供一个带有文本
的控制台视图
Press Enter to quit.
当我浏览到
该网页给出了以下输出:
I'm running on Microsoft Windows NT 6.2.9200.0 nFrom assembly
ConsoleApplication1, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null
然而,当我将我所有的 dll 和 exe 复制到我的 pi 并执行命令时
Mono ConsoleApplication1.exe
pi给出了一行Press Enter to quit。但是当我浏览到端口号为 500 的 pi 的 ip 时,在我的例子中
网页显示Bad Request (Invalid host)
尝试替换:
http://localhost:5000
到
http://*:5000
问题出在 rtf_leg 指示我从 pi 访问网站时本地主机不可用的方向。
我只需要将基数 url 更改为圆周率的精确 url。就我而言 http://192.168.7.137:5000.
这样当 url 被访问并且显示的结果是:
时 pi 知道该怎么做
I'm running on Unix 3.18.7.0 nFrom assembly ConsoleApplication1,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
:D
当我尝试将 owin asp.net 网站移植到 pi 时,(raspberry pi 模型 b)我最终得到了一个显示错误页面的网站:
Bad Request (Invalid host)
在圆周率上,我 运行 raspbian 气喘吁吁。我安装了单声道(版本 3.2.8)。
对于一个简单的控制台应用程序,mono 可以工作。
对于 Owin 网站,我在 visual studio 2015 年制作了一个控制台项目。
我向这个控制台应用程序添加了 nuget 包:
Microsoft.Owin
Microsoft.Owin.Diagnostics
Microsoft.Owin.Host.HttpListner
Microsoft.Owin.Hosting
public void Configuration(IAppBuilder app)
{
app.UseWelcomePage(new Microsoft.Owin.Diagnostics.WelcomePageOptions()
{
Path = new PathString("/welcome")
});
app.Run(context =>
{
context.Response.ContentType = "text/plain";
string output = string.Format(
"I'm running on {0} nFrom assembly {1}",
Environment.OSVersion,
System.Reflection.Assembly.GetEntryAssembly().FullName
);
return context.Response.WriteAsync(output);
});
}
现在我只需要在程序class中指定项目的基础url,id在主函数
中完成 string baseUrl = "http://localhost:5000";
using (WebApp.Start<Startup>(baseUrl))
{
Console.WriteLine("Press Enter to quit.");
Console.ReadKey();
}
使用此代码,我的项目在启动时会提供一个带有文本
的控制台视图Press Enter to quit.
当我浏览到
该网页给出了以下输出:
I'm running on Microsoft Windows NT 6.2.9200.0 nFrom assembly ConsoleApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
然而,当我将我所有的 dll 和 exe 复制到我的 pi 并执行命令时
Mono ConsoleApplication1.exe
pi给出了一行Press Enter to quit。但是当我浏览到端口号为 500 的 pi 的 ip 时,在我的例子中
网页显示Bad Request (Invalid host)
尝试替换:
http://localhost:5000
到
http://*:5000
问题出在 rtf_leg 指示我从 pi 访问网站时本地主机不可用的方向。
我只需要将基数 url 更改为圆周率的精确 url。就我而言 http://192.168.7.137:5000.
这样当 url 被访问并且显示的结果是:
时 pi 知道该怎么做I'm running on Unix 3.18.7.0 nFrom assembly ConsoleApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
:D