简单MVC 4站点中的间歇性对象引用错误

时间:2013-02-05 19:51:06

标签: c# iis-7 asp.net-mvc-4

我在Windows Server 2008 R2上的IIS7上的MVC 4中设置了一个简单的网站(没有CSS,没有JS)。简单的HTML是由后端中的一个简单的蜘蛛生成的,它在一个论坛中登录并获取几行HTML代码,将其剥离并最终生成HtmlString。 MVC视图正在使用生成的字符串。 View调用其Controller的公共静态方法。

当我第一次访问该网站时,它可以正常工作几个小时。然后每隔一段时间就会出现这个错误:

  

对象引用未设置为对象的实例。

     

描述:执行期间发生了未处理的异常   当前的网络请求。请查看堆栈跟踪了解更多信息   有关错误的信息以及它在代码中的起源。

     

异常详细信息:System.NullReferenceException:不是对象引用   设置为对象的实例。

     

来源错误:

     

第6行:第7行:第8行:   @ ns.Controllers.HomeController.getIndex()

     

源文件:c:\ pathTo \ Views \ Home \ Index.cshtml行:   8

     

堆栈追踪:

     

[NullReferenceException:对象引用未设置为的实例   object。] SimpleBrowser.Browser.get_XDocument()+92
  SimpleBrowser.Browser.Find(String id)+52
  ns.Controllers.HomeController.getIndex()+93 ASP._Page_Views_Home_Index_cshtml.Execute()in   c:\ pathTo \ Views \ Home \ Index.cshtml:8 [/]

这是有问题的控制器(注意:我使用的是SimpleBrowser库):

public class HomeController : Controller
{
    public static HtmlString getIndex()
    {
        string URI = @"uri";

        var browser = new Browser();
        browser.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.10 (KHTML, like Gecko) Chrome/8.0.552.224 Safari/534.10";

        // login
        browser.Navigate(URI);
        browser.Find("username").Value = "user";
        browser.Find("password").Value = "pass";
        browser.Find(ElementType.Button, "name", "login").Click();

        browser.Navigate("otheruri");

        var html = new StringBuilder();
        foreach (var item in browser.Select(".phpbb_row"))
        {
            html.Append("<dl>");
            html.Append("<dt>");
            html.Append("<a href=\"http://prefix");
            html.Append(item.Select(".topictitle").GetAttribute("href"));
            html.Append("\">");
            html.Append(item.Select(".topictitle").Value);
            html.Append("</a>");
            html.Append("<dd>");
            html.Append(item.Select(".phpbb_posts").Value);
            html.Append("</dd>");
            html.Append("<dd>");
            html.Append(item.Select(".phpbb_lastpost").Value);
            html.Append("</dd>");
            html.Append("</dt>");
            html.Append("</dl>");
        }

        return new HtmlString(html.ToString());
    }


    //
    // GET: /Home/
    public ActionResult Index()
    {
        return View();
    }

}

观点:

@{
    ViewBag.Title = "title";
}

datetime: @DateTime.Now
<p />

@ns.Controllers.HomeController.getIndex() // this is where I call the method, and where the NullException occurs.

编辑:访问该网站的用户绝不会超过2位,而且大多数情况下,只有1位用户每天最多会访问该网站30次。

编辑2:ns只是定义HomeController的命名空间的名称。或者更确切地说,是项目名称空间的名称。

0 个答案:

没有答案