最近给网站加了国际化,支持多语言,发布之后出现了一些问题,这里记录下解决过程。
报错如下:
Failed to load System.Private.CoreLib.dll (error code 0x8007000B) Path: /var/www/html/rdonlynet/System.Private.CoreLib.dll Error message: An attempt was made to load a program with an incorrect format. (0x8007000B) Failed to create CoreCLR, HRESULT: 0x8007000B这个错误代码 0x8007000B 的核心含义是 “试图加载格式不正确的程序”。
简单来说,这是典型的 “架构不匹配” 错误。通常是因为你的 .NET 程序(或其中的某个组件)是 32 位的,而运行环境是 64 位的(或者反过来),导致系统无法正确加载核心库 System.Private.CoreLib.dll。
解决办法:
使用vs发布的版本,直接全拷贝了publish下的内容,以前都是这么做的,但是这次貌似不行,它下面的组件是windows的所以报错了,需要拷贝linux-x64下的内容,服务器是linux的。这里需要拷贝服务操作系统对应的文件。
网站加了雷池防护,访问80端口会转发到nginx服务,nginx再转发到程序,反向代理(Nginx)配置不当会导致应用获取到的原始请求信息(如 Scheme、Host、Path)变成了内部转发的地址(带端口号),而不是用户实际访问的外部地址(无端口号)。
解决方案:
修改nginx的部分配置
关键:传递原始请求的主机名
proxy_set_header Host $http_host;报错如下:
The page at 'https://www.rdonly.com/tags' was loaded over HTTPS, but requested an insecure resource 'http://www.rdonly.com/zh/tags'. This request has been blocked; the content must be served over HTTPS.这是一个典型的 混合内容(Mixed Content) 错误。浏览器正在加载安全的 HTTPS 页面(https://www.rdonly.com/...),但该页面内的代码却试图加载一个不安全的 HTTP 资源(http://www.rdonly.com/...)。为了用户安全,现代浏览器会自动阻止这种不安全的请求。
解决方案:
修改nginx的部分配置
add_header Content-Security-Policy "upgrade-insecure-requests";
location / {
proxy_pass http://127.0.0.1:1234;
# 你的后端应用地址
# 确保透传原始请求的协议(Scheme)
proxy_set_header X-Forwarded-Proto $scheme;
# 其他 proxy_set_header 配置...
}