我有一个应用程序在本地调试时工作正常。但是当它作为Azure服务部署到Azure时,它有一个奇怪的问题。我在页面上有两个Silverlight网格控件,它显示一个红色的x并给出错误,"无法加载数据。请检查您的网络连接并尝试重新加载。"
此页面上正在运行其他几个查询,并正确地从数据库中的其他表中提取数据。正确运行的查询与标签或文本框控件相关联。
失败的查询,返回HTTP状态代码500(内部错误)。如果我尝试将查询作为IVisualCollection
传递给构造函数,并且我将调用包装在Try
块中,则内部异常是"对象引用未设置为对象的实例"所以,一个空参考例外。在构造函数调用之前检查null并在查询为null时弹出消息框作为调试方法没有产生任何结果。
Try
'Check for nulls
If (Me.qQuoteByFirm Is Nothing) Then
Me.ShowMessageBox("qQuoteByFirm", "Error", MessageBoxOption.Ok)
End If
If (Me.qQuoteByFirm.Screen Is Nothing) Then
Me.ShowMessageBox("Screen", "Error", MessageBoxOption.Ok)
End If
If (New ModalWindowHelper(Me.qQuoteByFirm, "mwAddQuote", "Quote") Is Nothing) Then
Me.ShowMessageBox("Modal", "Error", MessageBoxOption.Ok)
End If
'Create helper
Me.HelperAddQuote = New ModalWindowHelper(Me.qQuoteByFirm, "mwAddQuote", "Quote")
Catch ex As Exception
Dim err As String = ""
For Each item In ex.Data
err = err & item.ToString()
Next
err = err & ex.InnerException.ToString() & vbCrLf & _
ex.Message.ToString() & vbCrLf & _
ex.StackTrace
Me.ShowMessageBox(err, "Error", MessageBoxOption.Ok)
End Try
Public Sub New(ByVal visualCollection As IVisualCollection, _
ByVal dialogName As String, _
Optional entityName As String = "")
_collection = visualCollection
_dialogName = dialogName
_entityName = If(entityName <> "", entityName, _collection.Details.GetModel.ElementType.Name)
_screen = _collection.Screen
End Sub
查询的实际构造似乎并不重要。我已经尝试了几种变体以及请求整个表格。结果相同。但是,这仅发生在两个特定的表上。在其他屏幕上显示其他表格的网格控件正常工作。
这是奇怪的部分。如果我注释掉对构造函数的调用,我可以访问gird控件并向其添加数据,即使红色框仍然存在。如果我刷新网格控件,数据就会消失,就像它没有保存或不存在一样。但是,检查SQL Azure管理门户中的表会显示数据已正确填充在表中。
应用程序和数据库清晰连接,能够正常通信。那么为什么当从这两个表中读取(但不是写入)时,我的网格控件会抛出异常?为什么这只在部署时发生?我可以使用哪些其他技术来获取更多信息?