编程笔记

网站国际化发布带来的一些问题及处理

3/18/2026 12:39:37 AM
0

最近给网站加了国际化,支持多语言,发布之后出现了一些问题,这里记录下解决过程。

1.网站服务启动不起来。

报错如下:

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的。这里需要拷贝服务操作系统对应的文件。

2.访问网站自动跳转到带"网址:端口号/zh",然后加载报错。

网站加了雷池防护,访问80端口会转发到nginx服务,nginx再转发到程序,反向代理(Nginx)配置不当会导致应用获取到的原始请求信息(如 Scheme、Host、Path)变成了内部转发的地址(带端口号),而不是用户实际访问的外部地址(无端口号)。

解决方案:

修改nginx的部分配置

关键:传递原始请求的主机名
proxy_set_header Host $http_host;

3.点击网站链接无法自动跳转

报错如下:

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 配置... 
}

友情链接

Copyright @2021-2026 关于