我有一个 ASP.NET 应用程序,我最近发布到 IIS7 服务器进行测试。我对整个“应用程序发布”和 IIS 的事情完全陌生,但是工作中的人一直在帮助我,他们就像我和谷歌一样对此感到困惑。
问题在于后面代码顶部的页面属性声明之一,当我尝试访问其中一个属性时,例如 page_load,我得到一个“对象未设置为实例”异常。这只发生在共享属性上,而不是标准属性。这就是我声明我的属性的方式:
Public Shared Property sharedPortalController As New Aurum.Genesis.Adapter.Business.Portal.BusinessLogic.PortalControlClass
Public Shared Property sharedSelectedObjectType As String = "Hello World"
Public Shared Property sharedSelectedMessageGUID As String
Public Shared Property sharedSelectedMessageGUIDs As String()
Public Shared Property sharedXMLDocument As XmlDocument
Public Property xmlIndexCounter As Integer = 0
如果我将“sharedSelectedObjectType”初始化为“Hello World”,然后将该值应用于页面加载时标签中的文本,则会引发“未设置对象...”异常,但如果我要这样做与 xmlIndexCounter 相同并将其值应用于标签,它完全没有问题并且页面将加载。仅当我尝试访问属性或与属性交互时才会发生这些错误。这就是我尝试在页面加载中与我的属性交互的方式,在本例中使用“Hello World”标签示例:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If IsPostBack = False Then
ScriptManager.EnablePageMethods = True
If Session("LockData") = True Then
sharedPortalController.RecordLockUsername = Session("username")
sharedPortalController.LockQueueRecords()
Session("LockData") = False
Else
'Do Nothing
End If
lblWelcome.Text = lblWelcome.Text + Session("Username")
lblDepartment.Text = "Genesis " + Session("Department") + " Department Portal"
lblDepartment.Text = xmlIndexCounter.ToString
ReBindGridview()
End If
End Sub
还值得注意的是,访问此页面是通过基于授权 cookie 的登录系统。登录页面在属性声明和使用方面的行为绝对正常,无论它们是否共享。成功验证用户后,登录页面执行 response.redirect 到主菜单页面,这是问题的根源。
很抱歉,我无法提供更多详细信息,纯粹是因为我对此很陌生,我真的不知道您可能需要什么进一步的详细信息,所以如果您需要任何其他信息,请务必询问并告诉我因为一开始就不知道!出于这个原因,我有一个偷偷摸摸的怀疑,这将是我错过的非常明显的事情。
任何帮助是极大的赞赏!干杯,丹