我在本地服务器(casini和IIS 7.5)上测试了我使用MVC 2构建的Web应用程序。 但是,当我将应用程序部署到Windows 2008服务器标准版(也运行IIS 7.5)时,我收到了意想不到的结果。
问题在于我指定了一个控制器,通过将xml数据写入文件,使用Fusion Charts显示图形。
部署应用程序时,一切正常(切换配置文件/查看月 - 年份),但是当我尝试指定日期范围时,应用程序会加载,就好像在将第一个xml条目值设置为0时没有发生任何事情一样。 / p>
在我的本地服务器中不会发生这种情况,我在部署或本地服务器上都没有收到任何错误。
以下是可能能够解决此问题的相关代码部分。
行动方法:
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;
}
我还附加了包含正确输出和错误输出的图像。
答案 0 :(得分:0)
由于某种原因,服务器文化之间存在差异(即使服务器托管在与我居住的同一个国家/地区)。
DateTime对象未正确解析。