2016-09-01 1 views
0
using (var client = new WebClient()) 
{    
    client.UseDefaultCredentials = true; 
    client.Credentials = new NetworkCredential("abcd","abcd1234"); 
    string downloadlink_INC="https://completeurl.com/"; 
    client.DownloadFile(downloadlink_INC, "downladed.csv");     
} 

Windows 인증을 사용하는 로그인 한 웹 계정에서 .csv 파일을 다운로드하려고합니다. 그러나 여기에서는 웹 사이트에 대한 액세스 권한이없는 사용자도 허용하도록 기본 네트워크 자격 증명을 제공했습니다. 내가 통과하는 링크는 다운로드 폴더의 브라우저에서 .csv 파일을 다운로드하는 것이지만 동일한 (https://completeurl.com/)이 C# 코드를 통해 사용될 때 내용은 HTML 코드가 아닌 열입니다.Windows 인증을 사용하는 로그인 된 웹 계정에서 .csv 파일을 다운로드하려고 시도 중입니다.

C#을 통해 파일은 페이지의 html 코드에 불과합니다.

미리 감사드립니다 !!

The CSV header view

+0

환영합니다. 질문이 분명하지 않다. 설명을 조금 더 분명하게 만들 수 있습니까? –

+0

어떻게 콘텐츠를 받고 싶습니까? 당신이 C#에서 그렇게하지 않으면 어떻게 정상적으로 보이나요? – rbr94

+0

안녕 Arsen, Windows 자격 증명과 같은 로그인에 계정 자격 증명을 사용하는 웹 사이트가 있으므로 매번 사이트에 로그인 할 필요가 없습니다. 그냥 시스템에 로그인하고 사이트를 누르십시오, 그것은 위에 귀하의 이름을 표시합니다. 따라서 동일한 브라우저의 주소 표시 줄에 붙여 넣으면 csv 파일을 다운로드하는 링크가 있습니다. 이 경우 내용은 훌륭하고 표 형식입니다. 그러나 위의 코드를 통해 동일한 URL을 실행하면 CSV 파일을 다운로드하지만 내용은 하나의 열에 완전한 HTLM 코드입니다. – Ashish

답변

0

비슷한 질문에 대한 대답을 참조하십시오 : Domain credentials for a WebClient class don't work

언급 답을 사용하여 Windows 인증으로 보호 웹 사이트 뒤에 리소스에 액세스하려고 할 때 다음 코드는 나를 위해 일한 :

using (var client = new WebClient()) 
{ 
    string username = ""; 
    string password = ""; 
    string domain = ""; 
    string downloadlink_INC = "https://completeurl.com/"; 

    client.UseDefaultCredentials = false; 
    CredentialCache cc = new CredentialCache(); 
    cc.Add(
     new Uri("https://completeurl.com/"), 
     "NTLM", 
     new NetworkCredential(username, password, domain)); 
    client.Credentials = cc; 

    client.DownloadFile(downloadlink_INC, "downladed.csv"); 
} 

그러나 바이너리를 리버스 엔지니어링 할 수 있고 사용자의 신빙성이 있으므로 Windows 로그인 자격 증명을 소스 코드에 저장하고 배포하는 것이 좋습니다. 노출 된 ials.

+0

감사합니다.하지만 제가 언급 한 것처럼 저는이 페이지의 리소스를 다운로드하려고하지 않습니다. 나는 테이블/보고서를 다운로드하려고하거나 CSV 파일로 내보내려고하고 있으며 내용은 표 형식으로 표시됩니다. 질문에 csv 파일 헤더의 스크린 샷을 첨부했습니다. – Ashish

+0

@Ashish HTML 테이블을 CSV 파일로 변환하려는 경우 [HTML 테이블을 C# 사용 가능한 데이터리스트로 구문 분석] (http://blog.ditran.net/parsing-html-table-to-c)을 살펴보십시오. -usable-datalist /) 및 [HTML 민첩성 팩에서 여러 HTML 테이블을 철저히 반복] (http://stackoverflow.com/questions/39373749/loop-thorough-multiple-html-tables-in-html-agility-pack)을 참조하십시오. html 테이블 데이터가 DataSet 또는 DataTable에 있으면 간단하게 CSV로 내보낼 수 있습니다. – sly

+0

감사합니다. Sly, HTML 테이블은 항상 우리가 웹 페이지의 HTML 본문에 넣은 정적 컨텐트 테이블입니다. 그러나 내가 다운로드하려고하는 테이블이 매일 바뀌고 있습니다. 매일 테이블에 어제의 새로운 항목이 표시됩니다. 오늘 2011 년 9 월 13 일에 콘텐츠를 다운로드하는 경우 표의 콘텐츠에 어제 새롭고 삽입 된 기록이 표시됩니다. 표에로드되고 페이지에 표시되면 표 머리글에서 마우스 오른쪽 버튼을 클릭하면 내 로컬 폴더에 파일을 다운로드 할 CSV/PDF/XLS로 콘텐츠를 내보낼 수있는 옵션이 표시됩니다. – Ashish

관련 문제