如何使用WebClient.DownloadData(下载到本地的DummyPage.aspx)?

6

我正在学习这个链接上的教程:http://www.codeproject.com/KB/aspnet/ASPNETService.aspx

现在我遇到了以下代码,不知道该怎么做:

private const string DummyPageUrl = 
    "http://localhost/TestCacheTimeout/WebForm1.aspx";

private void HitPage()
{
    WebClient client = new WebClient();
    client.DownloadData(DummyPageUrl);
}

我的本地应用程序地址在“localhost”后面有一个端口号,那么我如何获取完整路径(是否可以在Application_Start方法中完成)?我希望它非常通用,以便在任何情况下都可以使用。

非常感谢!

更新

我在Application_Start中尝试了这个方法,它运行得很好,但是当发布到IIS7时立即返回错误。

String path = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/");
3个回答

7
如果是调用同一服务器,可以使用Request对象:
var url = new Uri(Request.Url, "/TestCacheTimeout/WebForm1.aspx").AbsoluteUri;

否则,将“其他”服务器的详细信息存储在配置文件或数据库中,并仅为其提供正确的值。
但更好的问题是:为什么要通过http“与自己交谈”?为什么不直接调用类方法?个人而言,我会使用外部定时作业来完成此操作。

1
我所要做的就是按照那个网站的指示模拟一个可以持续运行并为我执行一些任务的服务。 - Leo
如果您的Web应用程序在虚拟目录中运行,您可以/应该使用var url = Request.Url.ToString().Substring(0, Request.Url.ToString().LastIndexOf('/')) + "/WebForm1.aspx"; - JP Hellemons
如果您部署到使用应用程序文件夹的环境中,则会出现问题。 - MiloTheGreat

1
你需要一个适用于不同环境的答案,可能包含虚拟应用程序文件夹。
// r is Request.Url
var url = new Uri(r, System.Web.VirtualPathUtility.ToAbsolute("~/Folder/folder/page.aspx")).AbsoluteUri;

这将在所有情况下都有效,并且在部署时不会出现任何令人讨厌的意外。

0

我怀疑你正在使用 Visual Studio 内置的 ASP.NET 开发服务器,默认情况下会更改端口号。如果是这种情况,您可以尝试配置开发服务器始终使用相同的端口(如此描述),然后只需将端口号添加到您的 URL 中,就像这样:

private const string DummyPageUrl = 
"http://localhost:42001/TestCacheTimeout/WebForm1.aspx";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接