0

嗨,我使用 VisualStudio 2012,我创建了从外部 ftp 站点读取信息(来自 .csv)的网站。当我在本地主机上运行它时,一切正常,但后来我将它部署到无法正常工作的天蓝色网站,只显示零应该是数字。(不要从 ftp 获取信息)

public static List<ApiClient.Models.StatsList> GetStatsData(string Ticket, DateTime start, DateTime end, int CampaignId, String CampaignName)
    {
        //--------------------------------------------------------------------------------------------------------
        //Gets stats from GetAdsStats service (included: Banner id, impressions, and clicks)
        //--------------------------------------------------------------------------------------------------------
        List<ApiClient.Models.StatsList> FullList = GetAdStatsService.GetAdsStats(Ticket, start, end, CampaignId);
        List<LikesDislikesList> LikeDislike = new List<LikesDislikesList>();
        //--------------------------------------------------------------------------------------------------------
        //
        //--------------------------------------------------------------------------------------------------------
        string day;
        string month;
        if (DateTime.Today.AddDays(-1).Day.ToString().Count() == 1)
        {
            day = "0" + DateTime.Today.AddDays(-1).Day;
        } 
        else 
        {
            day = DateTime.Today.AddDays(-1).Day.ToString();
        }
        if (DateTime.Today.Month.ToString().Count() == 1)
        {
            month = "0" + DateTime.Today.Month;
        }
        else
        {
            month = DateTime.Today.Month.ToString();
        }
        try
        {
            string uri = "ftp://siteAdres" + CampaignName.Replace(" ", "_") + "_Optimizing_events_" + day + "-" + month + "-" + DateTime.Today.Year + ".csv";
            Uri serverUri = new Uri(uri);
            if (serverUri.Scheme != Uri.UriSchemeFtp)
            {
                return FullList;
            }
            FtpWebRequest reqFTP;

            reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(uri));
            reqFTP.Credentials = new NetworkCredential("username", "password");
            reqFTP.KeepAlive = false;
            reqFTP.Method = WebRequestMethods.Ftp.DownloadFile;
            reqFTP.UseBinary = true;
            reqFTP.Proxy = null;
            reqFTP.UsePassive = false;
            FtpWebResponse response = (FtpWebResponse)reqFTP.GetResponse();
            Stream responseStream = response.GetResponseStream();
            StreamReader csvStream = new StreamReader(response.GetResponseStream());
            //--------------------------------------------------------------------------------------------------------
            //Read Likes/Dislikes from csv file stream
            //--------------------------------------------------------------------------------------------------------

            using (var rd = csvStream)
            {

                int iname = -1;
                int ilikes = -1;
                int idislikes = -1;
                while (!rd.EndOfStream)
                {
                    var raw = rd.ReadLine().Split((char)9);
                    if (rd.Peek() == -1)
                    {
                        break;
                    }
                    if (ilikes == -1 || idislikes == -1)
                    {
                        for (int i = 0; i < raw.Length; i++)
                        {
                            if (raw[i] == "Event name")
                                iname = i;
                            if (raw[i] == "Custom Event 14")
                                ilikes = i;
                            if (raw[i] == "Custom Event 15")
                            {
                                idislikes = i;
                                raw = rd.ReadLine().Split((char)9);
                            }
                        }
                    }
                    else
                    {
                        LikeDislike.Add(new LikesDislikesList() { Likes = Convert.ToInt32(raw[ilikes]), Dislikes = Convert.ToInt32(raw[idislikes]), Name = raw[iname] });
                    }
                }
            }
            response.Close();
        }
        catch(Exception ex)
        {
            log4net.Config.XmlConfigurator.Configure();
            log.Warn("GetAdStatsService.cs " + ex);
        }
        //--------------------------------------------------------------------------------------------------------
        //Add like/dislike values for certain banners
        //--------------------------------------------------------------------------------------------------------
        foreach (var element in FullList)
        {
            foreach (var el in LikeDislike)
            {
                if (element.name == el.Name)
                {
                    element.Likes = el.Likes;
                    element.Dislikes = el.Dislikes;
                }
            }
        }
        return FullList;
    }
}

}

4

1 回答 1

0

在调用 response.GetResponseStream() 之前检查 FtpWebResponse.StatusCode。您可能遇到了某种连接错误。我的猜测是您的 Azure VM 上的防火墙设置。

于 2013-08-28T16:26:48.510 回答