ASP.NET 3.5无法看到我的代码背后

时间:2013-03-06 18:13:03

标签: asp.net code-behind

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

现在我有一个获得此错误的页面

  

“分析程序错误消息:无法加载类型'[命名空间]。[PageName]'

。如果我取出继承声明,它就可以了。命名空间和页面名称在后面的代码中声明,在页眉中引用。

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

4 个答案:

答案 0 :(得分:2)

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

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

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

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

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

答案 1 :(得分:1)

当你有一个代码隐藏文件时,需要将其编译成DLL,并且该DLL需要位于web服务器的bin目录中。没有Inherits它实际上不能正常工作 - 你的代码隐藏中没有任何内容 - 它最初可能只显示确定,但没有任何事件会触发。

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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