3

我在全球化方面遇到了一些问题。我在 ASP.NET 2.0 中继承了一个非常古老的项目。它有多个用于多种语言的全球化文件。

但是,当我构建应用程序进行部署时,它在我们的测试环境中运行良好。但是当我们将应用程序复制到生产环境时,它会在 <%$ Resources: Global, MyStringHere %> 上出错。

说明在资源文件中找不到 MyStringHere。

为什么这在开发和测试环境中运行良好,但在生产环境中却不行?这些文件从一个环境到另一个环境完全相同(尽管 inetpub 文件位于每台机器上的不同目录中)。

有人有想法么?

编辑:

很奇怪。如果我从后面的代码中调用资源。

public string _MyStringName = Resources.Global.MyStringHere;

这适用于所有环境。

但是,使用旧的:

<%$Resources: Global, MyStringHere %>

仅在生产中出错。

4

2 回答 2

0

在这里只是在黑暗中拍摄,但是您是否有根据环境或机器名称配置的密钥?我们在许多项目中都这样做。我们的一些项目出于特定原因只会在特定环境中运行。另一个猜测是检查你是否有 #if(DEBUG) 某处可能正在跳过代码。

于 2012-03-05T23:26:03.690 回答
0

您确定将 App_GlobalResources 中的 .resx 文件复制到部署站点吗?App_GlobalResources 文件通常应该与 Build Action = Content 一起使用,而不是 Build Action = Embedded Resources。

在您的开发机器上,嵌入式资源的设置有效,因为文件仍然物理上位于 App_GlobalResources 中,并且是嵌入的。嵌入的资源被忽略。这会给您一种错误的印象,即您的构建操作配置正确。

于 2012-03-05T23:58:46.477 回答