我正在关注此链接上的教程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("~/");
答案 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";