2013-08-28 43 views
0

您好我使用VisualStudio 2012,我創建了從外部FTP站點讀取信息(來自.csv)的網站。當我在本地主機上運行它時,一切正常,但隨後我將它部署到了無法正常工作的天藍色網站,只顯示零到處應該是數字。調用response.GetResponseStream之前(不得到來自FTP信息)流文件從本地工作在天藍色的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; 
    } 
} 

}

回答

0

檢查FtpWebResponse.StatusCode()。你可能會遇到類似的連接錯誤。我的猜測是你的Azure虛擬機上的防火牆設置。

+0

我通過修改reqFTP.UsePassive = false來修復它; reqFTP.UsePassive = true; – piotr

+0

請將您的問題解答發佈爲*答案*而不是*評論* - 通過這種方式,答案可以正確投票,人們會知道答案已經獲得。 –

相關問題