有没有人知道一个工具,脚本,包,我可以用来访问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