2011-08-24 3 views
0

ASP.NET Webforms 웹 응용 프로그램 프로젝트의 모든 페이지를 방문하는 데 사용할 수있는 도구, 스크립트, 패키지를 아는 사람이 있습니까? (우리는 MVC 기능을 사용하지 않습니다)ASP.NET 프로젝트의 모든 페이지를 방문하려면 도구/스크립트가 필요합니까?

가급적이면, 나는 목록의 모든 페이지를 조회 할 수 있도록 조회 문자열 매개 변수를 추가 할 수 있도록 목록을 편집하고 편집 할 수 있어야합니다. HTTP 응답 코드를 수집하십시오 (200, 404, 500, 301, 무엇이든).

+0

webforms, mvc 등을 사용합니까? –

+0

Webforms. 편집 된 질문 – Shlomo

답변

0
  • 디자인 시간

대신 응용 프로그램에서 URL에 대한 문자열 리터럴을 사용하는 URL()이 같은 각 페이지 클래스의 메소드 정의

public static string Url() { get { return "~/this_page.aspx"; } } 
public static string Url(int ID) { get { return "~/this_page.aspx?id=" + ID; } } 

을 아니면 모든 URL을 나열 정적 클래스

public static class URL { 
    public static string Login() { get { return "~/login.aspx"; } } 
    public static string DisplayRecord(int recordID) 
     { get { return "~/display.aspx?id=" + recordID; } } 
  • 런타임

웹 테스트 프레임 워크를 사용하여 모든 링크를 크롤링하고 결과를 편집하십시오. I blogged은 셀레늄을 사용하는 하나의 가능한 솔루션입니다.

+0

셀레늄이 점점 뜨거워지고 있지만, 모든 링크를 크롤링하는 것보다 .csproj에서 정보를 처리하는 것이 좋습니다. 또한 프로그래밍 방식으로 또는 수동으로 목록을 작성하고 추가 할 수 있기를 원합니다. – Shlomo

0

.csproject에서 액세스 할 수있는 페이지를 가져오고 단추를 클릭하여 열 수있는 WinForms 응용 프로그램을 만들었습니다.

Here is a link to the code

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Windows.Forms; 
using System.Xml; 
using System.Xml.XPath; 

namespace OpenAllPages 
{ 
    public partial class Form1 : Form 
    { 
     public static IList<string> Pages; 

     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 
      string xmlstring = ReadXml("TaskManager.csproj"); 
      Pages = ParseAllPages(xmlstring); 
      pagesListBox.DataSource = Pages; 
     } 

     private string ReadXml(string location) 
     { 
      try 
      { 
       var myFile = new StreamReader(location); 
       string myString = myFile.ReadToEnd(); 
       myFile.Close(); 
       return myString; 
      } 
      catch (Exception e) 
      { 
       MessageBox.Show(String.Format("An error occurred: '{0}'", e.Message)); 
      } 
      return null; 
     } 

     private IList<string> ParseAllPages(string xmlstring) 
     { 
      XmlDocument xmlDoc = new XmlDocument(); 
      xmlDoc.LoadXml(xmlstring); 
      XPathNavigator nav = xmlDoc.DocumentElement.CreateNavigator(); 
      XmlNamespaceManager manager = new XmlNamespaceManager(nav.NameTable); 
      manager.AddNamespace("x", "http://schemas.microsoft.com/developer/msbuild/2003"); 
      var elements = nav.Select("x:ItemGroup/x:Content", manager); 

      var pageList = new List<string>(); 
      while (elements.MoveNext()) 
      { 
       var page = elements.Current.GetAttribute("Include", ""); 
       if (page.EndsWith(".aspx")) 
        pageList.Add(page); 
      } 
      return pageList as IList<string>; 
     } 

     private string AddPagePrefix(string page) 
     { 
      return "http://localhost:8080/" + page; 
     } 

     private void openAllButton_Click(object sender, EventArgs e) 
     { 
      foreach (string page in Pages) 
       System.Diagnostics.Process.Start("chrome.exe", AddPagePrefix(page)); 
     } 
    } 
} 

당신은 당신이 OpenAllPages 프로젝트에 열고는 "새로운 경우 복사"를 출력 속성에 복사의 설정하려는 페이지가 포함 된 프로젝트 파일을 배치해야합니다.

I Form1_Load는 TaskManager.csproj를 프로젝트 파일의 이름으로 변경합니다. 그리고의 : 사용중인 브라우저의 실행에

System.Diagnostics.Process.Start("chrome.exe", AddPagePrefix(page)); 

이름 바꾸기 매개 변수입니다.

관련 문제