我想从global asax中检索到我的网站的URL。这个URL必须是完整的(包括协议,域名等)。有没有简单的方法来实现这一点?我尝试了VirtualPathUtility.ToAbsolute,但它只提供了一个相对路径。
试一下这个:
HttpContext.Current.Request.Url.OriginalString
通过这种方式,您可以从global asax访问URL。
P.s. 您可以通过调试自己完成:
OriginalString
被使用是因为你想要完整的源信息。
您也可以使用没有端口的那个,即AbsoluteURI
public class Global : System.Web.HttpApplication
{
private void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
}
void Application_BeginRequest(Object source, EventArgs e)
{
var app = (HttpApplication)source;
var uriObject = app.Context.Request.Url;
//app.Context.Request.Url.OriginalString
}
void Application_Error(object sender, EventArgs e)
{
// Code that runs on application error
}
private void RegisterRoutes(RouteCollection routes)
{
// Code that runs on register routes
}
}
void Application_BeginRequest(Object source, EventArgs e)
{
HttpApplication app = (HttpApplication)source;
HttpContext context = app.Context;
// Attempt to peform first request initialization
FirstRequestInitialization.Initialize(context);
}
class FirstRequestInitialization
{
private static bool s_InitializedAlready = false;
private static Object s_lock = new Object();
// Initialize only on the first request
public static void Initialize(HttpContext context)
{
if (s_InitializedAlready)
return;
lock (s_lock)
{
if (s_InitializedAlready)
return;
/* << Perform first-request initialization here >> */
s_InitializedAlready = true;
}
}
}
多亏了 Royi,我现在记得如何做了(很久没做了):
var url = HttpContext.Current.Request.Url;
bar myUrl = url.AbsoluteUri.Replace(url.PathAndQuery, VirtualPathUtility.ToAbsolute("~/WS/someFolder/someService.svc"));
HttpContext.Current.Request
而不是Request....
。 - Royi Namir