首页 新闻 会员 周边 捐助

netcore站点发布的几个问题

1
悬赏园豆:100 [已解决问题] 解决于 2017-09-14 13:49

折腾 netcore app,头都大了,至今遇到如下问题不能解决:

【顺带说下:这个编辑器在火狐中,换行后输入内容,换行无效,必须先输入内容,再移动光标到指定位置后换行】

1、使用 dotnet publish 发布站点,即便使用了参数 “ -c Release ” 发布的好像还是Debug版本(PDB文件依然存在),怎么解决?

2、站点发布后,默认的 EnvironmentName 是 Production,如何修改这个配置?

3、最头痛的问题:

    3.1、虚拟机(Centos 7 最新版本里)的公网IP是 192.168.137.224

    3.2、运行netcoreapp后,使用curl是能正确的获得html的:

            curl http://127.0.0.1:5001

            curl http://localhost:5001

            curl http://192.168.137.224:5001

    3.3、我配置了 Nginx 反向代理 15000 端口到 127.0.0.1:5001,本机curl也能获得html:

            curl http://127.0.0.1:15000

            curl http://localhost:15000

            curl http://192.168.137.224:15000

    3.4、在宿主机器中访问 虚拟机的站点失败:

        http://192.168.137.224          成功响应nginx的默认页面
        http://192.168.137.224:15000    失败,nginx的access.log和error.log都没记录
        http://192.168.137.224:5001     失败,nginx的access.log和error.log都没记录

    3.5、Nginx的配置如下:

upstream netcore{
        server  127.0.0.1:5001;
}
server {
        listen          15000;
        location / {
                proxy_pass http://netcore;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection keep-alive;
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
        }

}

 

 

519740105的主页 519740105 | 大侠五级 | 园豆:5810
提问于:2017-09-13 20:34
< >
分享
最佳答案
1

第三个是防火墙的问题。

http://192.168.137.224  可以访问,说明网络设置没问题,80端口默认是开了的

http://192.168.137.224:15000 失败,说明centos7 的15000端口没开。

可以这样打开端口

firewall-cmd --zone=public --add-port=15000/tcp --permanent

firewall-cmd --reload

收获园豆:35
刀是什么样的刀 | 小虾三级 |园豆:910 | 2017-09-14 10:16

确实是防火墙的问题,关闭后就OK了。

519740105 | 园豆:5810 (大侠五级) | 2017-09-14 13:47
其他回答(4)
0

感觉你的 Nginx 配置写的不对吧,我记得我以前是这样写做反向代理的。

server {
        listen  127.0.0.1:80;
        server_name a.b.com;
        location / {
            proxy_pass  http://localhost:5001;
        }
    }
收获园豆:5
BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2017-09-13 20:52

网络抄的。

upstream:便于做负载均衡,也就是一个服务器组合。

server:是服务,我这样配置反向代理本机安装的github是成功的(具体的配置参数稍有不同)

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2017-09-13 20:56
2

第一个问题:Release版本也可以带PDB文件的,Release和Debug主要的区别是编译器是否对代码进行优化。

第二个问题:可以通过配置环境变量来设定。AddEnvironmentVariables()会将环境变量的值加进Configuration。

public Startup(IHostingEnvironment env)
        {
            var builder = new ConfigurationBuilder()
                .SetBasePath(env.ContentRootPath)
                .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
                .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
                .AddEnvironmentVariables();
            Configuration = builder.Build();
        }
收获园豆:20
行乎当行 | 园豆:347 (菜鸟二级) | 2017-09-13 23:15


谢谢!

第二个问题:我是问怎么指定应用运行时的Environment,而不是如何对不同的运行时Environment使用不同的配置。

 

同时,这个问题有两个新的疑问:

1、hosting.json这个配置的是站点服务地址和端口的话,修改后自动加载有效?2、直接dotnet publish到运行中的站点,文件是锁定的,但可以通过文件系统覆盖,覆盖后是否是能立即起作用?

 

谢谢!

 

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2017-09-14 13:46
0

1、判断标准不对。可以忽略

2、一般是环境变量

3、看了你的配置,没什么问题。从你的测试来看,本地能访问,外部不能访问,那么检查Linux的防火墙,可以考虑执行: systemctl stop firewalld 来关闭防火墙。

收获园豆:35
幻天芒 | 园豆:37205 (高人七级) | 2017-09-14 08:46

已确认是防火墙问题,尝试着关闭了防火墙就能访问了。

支持(0) 反对(0) 519740105 | 园豆:5810 (大侠五级) | 2017-09-14 13:47
0

VMWARE虚拟机工具栏的编辑-虚拟网络编辑器-NAT Setting-Port Forwarding

收获园豆:5
Yu | 园豆:12990 (专家六级) | 2017-09-14 09:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册