Sanando o "The request was aborted: The request was canceled." no upload

Nome do post meio estranho, mas vamos lá!
Esses dias, fazendo um uploadzinho maroto, o cliente precisou enviar um arquivo "grande" só que na hospedagem dele, mesmo adicionando os parâmetros de configuração no web.config como executionTimeoutmaxRequestLengthmaxAllowedContentLength, etc, continuava o erro. Dando uma vasculhada na net algumas pessoas resolveram colocando o KeepAlive como false mas eu estava usando o WebClient que não tem o atributo e não queria reprogramar o que já havia feito. Eis que encontro uma solução que caiu como uma luva mesmo não usando o atributo.
Adicione ao projeto a classe ExtendedWebClient conforme o código abaixo:

public class ExtendedWebClient : WebClient
{
    public int Timeout { get; set; }
    public new bool AllowWriteStreamBuffering { get; set; }

    protected override WebRequest GetWebRequest(Uri address)
    {
        var request = base.GetWebRequest(address);
        if (request != null)
        {
            request.Timeout = Timeout;
            var httpRequest = request as HttpWebRequest;
            if (httpRequest != null)
            {
                httpRequest.AllowWriteStreamBuffering = AllowWriteStreamBuffering;
            }
        }
        return request;
    }

    public ExtendedWebClient()
    {
        Timeout = 100000;
    }
}

Então, agora é apenas substituir o WebClient por ExtendedWebClient ficando assim:

ExtendedWebClient ftp = new ExtendedWebClient();
ftp.Timeout = Timeout.Infinite;
ftp.AllowWriteStreamBuffering = false;

E o resto segue! 
Pode utilizar o KeepAlive? Pode! Basta fazer da mesma forma que o AllowWriteStreamBuffering.

Implementação do ASP.NET (C#) com o Mikrotik (Hotspot)

Esse projeto até hoje tem demanda e, a pedidos de vocês, coloquei um pequeno projeto no GitHub para que possamos ir incrementando pouco a pouco com nossas idéias e sugestões. Hoje está bem básico e fiz o mais rápido possível para dar aquela forcinha.
Está em WebForm para que fique bem entendível e sirva de base para utilizar com outras linguagens de programação (PHP, Java, etc).
Lembrando que no post anterior, http://thiagomarcal.blogspot.com.br/2011/09/adicionando-uma-pagina-de-cadastro-de.html, tem toda a configuração inicial e muitos de vocês manjam melhor do que eu com o Mikrotik. Beleza?
Dúvidas, sugestões, correções, etc deixem nos comentários. Se quiserem algo muito específico e queiram me presentear com um Mikrotik, eu aceito! :)

Download: https://github.com/tmarcal/Mikrotik

No feriado, vamos resolver problemas

Dica rápida para que está tendo o erro "Could not create _isconfig.xml for use with InstallUtilLib.dll" ao compilar um projeto de instalação (InstallShield). O nome do projeto que está sendo instalado não pode ser igual ao nome do projeto de instalação (e vice-versa). :D

Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.

Retornando das cinzas com dicas, macetes e artigos depois de tanto tempo e inúmeros e-mails o bom filho a casa torna. Restaurando os e-mails de alguns internautas duvidosos, muitos se depararam o erro:

"Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information."

Geralmente sempre acontece quando tentam publicar uma aplicação em um servidor externo e dizem: na minha máquina estava funcionando! Não é? Se identificou? Adicionem no web.config o nível de segurança:

<system.web>    
     <trust level="Full"/> 
</system.web>

E se não der para adicionar ou se não funcionar? Rapaz, esse assunto é polêmico (envolve segurança, bla bla bla). Tem servidores e servidores e não vale a dor de cabeça de ter adaptar demais sua aplicação para o que o provedor te oferece. Acredito que para uma boa relação ambos tem que caminhar de mão dadas.