2013-03-06 57 views
1

我正在开发一块现有的网站,并有很多问题试图将我的文件上传到服务器。一切运行良好本地,但一旦我把我的文件在服务器上的东西开始打破。ASP.NET 3.5无法看到我的代码

现在我有一个页面,得到这个错误

“分析器错误信息:‘[命名空间] [页面名称]’未能加载类型

如果我走了。这个名字空间和pagename是在后面的代码中声明的,这在页头中被引用。

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

+0

请分享代码和页面指令。 – NoviceProgrammer 2013-03-06 18:15:49

回答

0

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

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

1

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

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

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

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