如何使用WebClient.DownloadData(到本地DummyPage.aspx)

时间:2010-11-12 10:54:33

标签: c# asp.net url path localhost

我正在关注此链接上的教程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 个答案:

答案 0 :(得分:7)

如果它正在回调同一台服务器,也许可以使用Request对象:

var url = new Uri(Request.Url, "/TestCacheTimeout/WebForm1.aspx").AbsoluteUri;

否则,将其他服务器的详细信息存储在配置文件或数据库中,并为其指定正确的值。

但更好的问题是:为什么你会通过http 与自己谈话?为什么不直接调用类方法?就个人而言,我将使用外部预定作业来完成此任务。

答案 1 :(得分:1)

当您推出可能具有虚拟应用程序文件夹的其他环境时,您需要一个有效的答案。

// r is Request.Url
var url = new Uri(r, System.Web.VirtualPathUtility.ToAbsolute("~/Folder/folder/page.aspx")).AbsoluteUri;

这将适用于所有情况,并且在部署时不会产生令人讨厌的意外。

答案 2 :(得分:0)

我怀疑您使用的是Visual Studio内置的ASP.NET开发服务器,它默认会更改端口号。如果是这种情况,那么您可以尝试简单地将开发服务器配置为始终使用相同的端口as described here。然后只需将端口号添加到您的URL,如下所示:

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