Como encontrar a porta vazia para começar WCF ServiceHost web
-
21-08-2019 - |
Pergunta
Como posso determinar uma porta de un-usado para iniciar um WCF ServiceHost para hospedar um servidor localhost web on?
Atualmente estou começando meu serviço se estaticamente na http: // localhost: XXXX onde XXXX é um valor estático no meu código.
Eu gostaria de substituir o XXXX com uma chamada GetUnusedPort () ...
Qualquer pensamento?
Solução
Melhor eu poderia encontrar era a tentativa até encontrar uma opção um aberto ...
http://forums.devshed.com/net-development-87/c-how-to-determine-if-a-port-is-in-use-371148.html
public static bool TryPortNumber(int port)
{
try
{
using (var client = new System.Net.Sockets.TcpClient(new System.Net.IPEndPoint(System.Net.IPAddress.Any, port)))
{
return true;
}
}
catch (System.Net.Sockets.SocketException error)
{
if (error.SocketErrorCode == System.Net.Sockets.SocketError.AddressAlreadyInUse /* check this is the one you get */ )
return false;
/* unexpected error that we DON'T have handling for here */
throw error;
}
}
Outras dicas
Por que não deixar que o usuário escolha qual porta eles querem hospedar o serviço on? Por exemplo, adicionar um valor no arquivo de configuração do seu aplicativo que é passada para o ServiceHost. Você também pode tentar aleatoriamente gerando um número de porta e teste para ver se ele estiver aberto, em seguida, repita o processo se outro aplicativo já está usando-o.