1

我正在开发一个现有网站的一部分,并且在尝试将我的文件上传到服务器时遇到了很多问题。一切都在本地运行良好,但是一旦我将文件放在服务器上,事情就会开始崩溃。

现在我有一个页面出现此错误

“解析器错误消息:无法加载类型 '[Namespace].[PageName]'

. 如果我取出继承声明,它会起作用。命名空间和页面名在后面的代码中声明,在页眉中引用。

我还刚刚注意到,在我之前的所有页面都没有代码隐藏。

4

4 回答 4

2

将文件放在 Web 服务器上有两种选择。

  • 一种选择是编译它并使用“发布”功能,其中所有代码隐藏文件都不在服务器上,而是编译为 .dll。
  • 另一种方法是不编译站点,只需将所有未编译的 aspx 和 .cs(或 .vb)文件复制到那里。

实际上有三个,但我认为你现在只需要处理这两个。它们在“灵活部署”部分下的http://msdn.microsoft.com/en-us/library/ms178466(v=vs.100).aspx中有进一步描述。

你的前任显然使用了第一种方法。解决此问题的唯一方法是从 \bin 目录中获取已编译的 .dll 文件,然后使用ReflectorTeleriks 的 Just Decompile等工具对其进行反编译。(后者免费,前者限时免费。)

或者,如果您可以获得完整的源代码,您可以简单地删除所有已经存在的内容并使用非编译方法发布它。当然,会有停机时间,你需要非常仔细地测试......

于 2013-03-06T18:51:27.140 回答
1

测试让您的代码启动并运行的最简单方法是发布代码。在 Visual Studio 的项目中,右键单击您的应用程序并单击发布,然后您可以在本地系统上创建一个文件夹并仅选择运行此应用程序所需的文件,然后选择发布。它只会复制运行应用程序所需的文件,您可以将这些文件复制到您的服务器,一切都应该是正确的。我还将复制您的 web.config/app.config 文件,因此请确保该文件中的所有内容都正确,或者在发布完成后从目录中删除该文件。

于 2013-03-06T19:30:25.827 回答
1

当你有一个代码隐藏文件时,它需要被编译成一个 DLL,并且这个 DLL 需要在 webserver 的 bin 目录中。如果没有Inherits- 您的代码隐藏中的任何内容都不会在那里 - 它实际上可能无法正常工作 - 它最初可能只会显示正常,但不会触发任何事件。

如果站点的其余部分都是使用 .aspx 页面中包含的代码完成的,那么这些页面都是独立的。但是,如果您想使用代码隐藏,则需要发布 DLL。

于 2013-03-06T18:18:32.493 回答
0

因此,我最终与在该网站上工作的另一个小组的首席开发人员进行了交谈。他解释说他们进行了解决方案重建,然后只需移动任何更改的 as*x 文件和 /bin .dll。出于某种原因,当我要求我的 subversion 客户端更新时,它实际上并没有更新任何东西,所以我的分支没有其他组制作的一些新控件。当我构建我的解决方案时,它不包含新控件的 .dll,所以当我上传我的 dll 时,新控件没有定义,我得到了相同的消息。当我取下新的 dll 时,我的控件没有定义。

无论如何,我解决了这个问题。感谢您的回答。

于 2013-03-11T04:14:36.993 回答