Azure - 未将对象引用设置为对象的实例

时间:2015-04-30 09:14:28

标签: vb.net azure model-view-controller

发布到Azure后,我遇到了MVC网站的问题。

在本地测试时一切正常,但在我发布模型停止工作的所有页面并在线上给出“NullReferenceException”之后,我使用模型,比如

@For Each item In Model

我可能忘记在Web.config中添加内容了吗?

P.S。如果您向我展示如何使用breakpionts调试azure网站,那将是完美的。

UPD:

NewsContoller.vb

Imports System
Imports System.Linq
Imports System.Web.Mvc
Imports website.Models.Objects.Collections
Imports website.Models.Logic
Imports website.Models.Objects

Namespace Controllers
    Public Class NewsController
        Inherits Controller

        ' GET: News
        Function Index(Optional ByVal id As Integer = 0) As ActionResult
            Dim model As New NewsList
            model = NewsManager.GetList(id)
            Return View(model)
        End Function

        ' GET: News/Details/id
        Function Details(ByVal id As Integer) As ActionResult
            Dim model As New News
            model = NewsManager.GetItem(id)
            Return View(model)
        End Function
    End Class
End Namespace

新闻/ Index.vbhtml

@ModelType List(Of website.Models.Objects.News)

<div style="width:100%; border-top:1px solid #e1e1e1;"></div>
<div class="content-wrapper">
    <h2 style="margin-top:0;">News</h2>
    <div style="position:relative;">
        <ul id="news-container" style="visibility:hidden;">
            @For Each item In Model
                @<li>
                     <a href="/News/Details/@item.NewsID">
                         <figure class="tint">
                             <img src='~/Uploads/News/@String.Concat(item.Pictures(0).PictureGUID,".jpg")' width="243" />
                         </figure>
                         <div class="date-container">@item.PostDate.ToString("%d")<br />@item.PostDate.ToString("MMM")</div>
                         <h3>@item.Title</h3>
                         <p style="width:233px; padding:0 5px; margin:5px 0;">@item.Description</p>
                     </a>
                </li>
            Next
        </ul>
    </div>

NewsManager.GetList()从数据库返回List(of News)。

1 个答案:

答案 0 :(得分:0)

虽然无法告知您NewsManager.GetList() NewsManager.GetList(id)的代码可能会返回null对象而不是空白列表。这可能是由于NewManager处理错误的数据库连接或数据库表在Azure中创建后没有任何数据的方式。

您可以通过执行以下操作来复制问题:

Function Index(Optional ByVal id As Integer = 0) As ActionResult
        Dim model As New NewsList
        model = Nothing 'simulate NewsManager.GetList(id) returning null 
        Return View(model)
End Function

正如@ misha130在评论中提到的,您将找到有关如何在Azure here中调试网站的详细说明。

基本步骤是:

  1. 打开网络项目
  2. 在相关行上设置断点。
  3. 右键单击该项目并选择发布。
  4. 对于正确的配置文件,单击“设置”选项卡,将“配置”更改为“调试”,然后单击“发布”。
  5. 在Server Explorer中展开Azure,展开Web Apps,右键单击您的Web应用程序,然后单击Attach Debugger。 (可能会有一点延迟)