Pergunta

Para tornar mais simples para um webapp para compartilhar arquivos com outro aplicativo em um servidor diferente, eu estou usando um tag base href na minha página mestra. Como muitas pessoas já descobriram, isso quebra Webform caminhos. Eu tenho uma classe Adapter Formulário de trabalho, mas não estou certo de como obter o caminho absoluto do url. Atualmente, meu programa é codificado para uso algo semelhante a:

HttpContext Context = HttpContext.Current;
value = "http://localhost" + Context.Request.RawUrl;

É interessante notar que eu estou testando no meu servidor IIS local, por isso há uma tendência estranha para um monte de coisas que eu tentei usar de forma que o caminho absoluto não incluir o nome de domínio (meu IIS local não é visível externamente). O que significa que não é um caminho absoluto e, portanto, o href base irá destruir-lo.

Existe uma boa maneira de lidar com isso de tal forma que ele vai trabalhar localmente sem codificar, mas também irá funcionar correctamente quando enviado para um servidor? Eu prefiro evitar qualquer coisa que envolve fazer algo diferente na cópia do lado do servidor.

Sim, eu percebo que eu poderia usar arquivos web.config separados localmente e no servidor para obter essa informação, mas isso é feio e viola SECO.

Foi útil?

Solução

Eu usei isso no passado:

// Gets the base url in the following format: 
// "http(s)://domain(:port)/AppPath"
HttpContext.Current.Request.Url.Scheme 
    + "://"
    + HttpContext.Current.Request.Url.Authority 
    + HttpContext.Current.Request.ApplicationPath;

Outras dicas

Mensagem antiga mas aqui é outro método um pouco menos detalhada

var baseUri = new Uri(HttpContext.Current.Request.Url, "/");

Eu usei seguinte e ele trabalhou para mim tanto o cliente eo servidor.

string surl = string.Format("{0}://{1}",
    HttpContext.Current.Request.Url.Scheme,
    HttpContext.Current.Request.Url.Authority);

Código:

string loginUrl = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/") + "Login/Login.aspx?UserName=" + LoggedinUser["UserName"] + "&Password=" + LoggedinUser["Password"];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top