2011-01-19 73 views
1

我测试了一个在本地服务器上使用MVC 2构建的Web应用程序(包括casini和IIS 7.5)。 但是,当我将应用程序部署到Windows 2008服务器标准版(也运行IIS 7.5)时,我收到了意想不到的结果。本地和已部署的MVC 2应用程序之间的差异

问题是我有一个控制器指定使用Fusion Charts通过将xml数据写入文件来显示图形。

部署应用程序时,一切正常(切换配置文件/查看月份年份缩放),但是当我尝试指定日期范围时,应用程序将加载,如同在将第一个xml条目值设置为0时未发生任何操作。

这不会发生在我的本地服务器中,我在部署服务器或本地服务器上都没有收到任何错误。

以下是可能能够解决此问题的代码的相关部分。

动作方法:

public ActionResult Index(string clientProfile, string domainProfile, string period, string sDate, string eDate) 
{ 
    if (period == "Month") 
      { 

       if (!string.IsNullOrEmpty(sDate) && !string.IsNullOrEmpty(eDate)) 
       { 
        var strXML = seoService.GraphForTrafficCountForDomain(clientProfile, sDate, eDate); 

        System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "/FusionCharts/Data/Traffic.xml", strXML); 
       } 
       else 
       { 
        var strXML = seoService.GraphForTrafficCountForDomain(clientProfile); 

        System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "/FusionCharts/Data/Traffic.xml", strXML); 
       } 
      } 
      else if (period == "Year") 
      { 

       var strXML = seoService.GraphForVisitsCountForDomainGroupByYear(clientProfile); 

       System.IO.File.WriteAllText(AppDomain.CurrentDomain.BaseDirectory + "/FusionCharts/Data/Traffic.xml", strXML); 
      } 

      return View(); 
} 

服务功能:

public string GraphForTrafficCountForDomain(string domain, string sDate, string eDate) 
{ 
      var profile = profileService.GetProfileByDomain(domain, null); 

      string strXML = ""; 

      var StartingDate = DateTime.Parse(sDate); 
      var EndingDate = DateTime.Parse(eDate); 

      var data = 
      repository.FindAll<TrafficData>(x => x.ProfileId == profile.Id && x.Date >= StartingDate && x.Date <= EndingDate).OrderByDescending(d => d.Date).ToList(); 

      strXML += @"<?xml version=""1.0"" encoding=""utf-8"" ?>"; 
      strXML += @"<graph caption="""" subcaption="""" xAxisName=""Month"" yAxisName=""Traffic"" decimalPrecision=""0"" formatNumberScale=""0"">"; 

      for (DateTime date = StartingDate; date.Date <= EndingDate; date = date.AddMonths(1)) 
      { 
       var startDate = new DateTime(date.Year, date.Month, 1); 
       var endDate = new DateTime(date.AddMonths(1).Year, date.AddMonths(1).Month, 1).AddDays(-1); 

       int value = 0; 
       if (data.Any(x => x.Date >= startDate && x.Date <= endDate)) 
       { 
        value = data.Where(x => x.Date >= startDate && x.Date <= endDate).Select(d => d.TrafficCount).Sum(); 
       } 

       strXML += String.Format(@"<set name=""{0}"" value=""{1}"" hoverText=""{2}""/>", 
              date.ToString("MM-yy"), (value == 0) ? "0" : value.ToString(), 
              (value == 0) ? "0" : value.ToString() + " " + date.ToString("MM-yy")); 
      } 

      strXML += @"</graph>"; 

      return strXML; 
} 

我还安装含有正确输出和错误的输出的图像。

Output Image

+0

XML文件在生产中是否正确写入?如果不是,写什么而不是正确的输出?您可能需要考虑将XMLWriter与XSD一起使用 - 这会使您编写XML更清晰并且不易出错。 – 2011-01-19 15:17:51

回答

0

问题是由于某种原因(即使服务器在同一个国家举办,我所在)服务器文化之间的差异。

DateTime Object无法正确解析。

相关问题