我有一个ASP.NET应用程序,我最近发布到IIS7服务器进行测试。我对整个'应用程序发布'和IIS事物都很陌生,但是工作中的人一直在帮助我,他们就像我和Google一样对此感到困惑。
问题在于我的页面的一个属性声明位于代码顶部,当我尝试访问其中一个属性时,例如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”,然后将该值应用于页面加载时标签中的文本,则抛出'Object not set ...'异常,但如果我是要对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,这是问题的根源。
对不起,我无法提供更多细节,纯粹是因为我对此很陌生,我真的不知道你可能需要什么进一步的细节,所以如果你还需要其他任何东西,请问并告诉我首先不知道它!出于这个原因,我有一种潜在的怀疑,这将是我错过的非常明显的事情。
非常感谢任何帮助! 干杯,丹