有沒有人知道一個工具,腳本,包,我可以用來訪問ASP.NET Webforms Web應用程序項目中的所有頁面? (我們沒有使用任何MVC功能)工具/腳本訪問ASP.NET項目中的所有頁面?
最好,我想能夠生成一個網址列表點擊,編輯列表,所以我可以添加一些查詢字符串參數,命中列表中的所有頁面,並收集HTTP響應代碼:(200,404,500,0301,無論如何)。
有沒有人知道一個工具,腳本,包,我可以用來訪問ASP.NET Webforms Web應用程序項目中的所有頁面? (我們沒有使用任何MVC功能)工具/腳本訪問ASP.NET項目中的所有頁面?
最好,我想能夠生成一個網址列表點擊,編輯列表,所以我可以添加一些查詢字符串參數,命中列表中的所有頁面,並收集HTTP響應代碼:(200,404,500,0301,無論如何)。
而不是在你的應用程序中使用字符串文字的網址,定義網址()在每個頁面類這樣的方法:
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; } }
使用Web測試框架來抓取所有鏈接並編輯結果。關於使用硒的一種可能的解決方案,我blogged。
硒正在變暖,但我寧願處理.csproj中的信息而不是抓取所有鏈接。我也希望能夠以編程方式和手動方式構建和添加到列表中。 – Shlomo
我做了一個WinForms應用程序,它可以從.csproject獲取可以訪問的頁面,並且可以通過單擊按鈕打開它們。
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項目打開並設置它的複製到輸出屬性爲「複製,如果新」頁面的項目文件。
我Form1_Load將TaskManager.csproj更改爲您的項目文件的名稱。 而在:
System.Diagnostics.Process.Start("chrome.exe", AddPagePrefix(page));
命名參數,您使用的瀏覽器的可執行文件。
你使用webforms,mvc等? –
Webforms。編輯問題澄清 – Shlomo