如何自定义默认值以外的tcp端口号(80)

时间:2010-05-24 11:51:50

标签: c#

我正在使用Web服务并使用httpWebRequest.create api进行连接。如果我在80以外的IIS中更改TCP端口号,那么我的应用程序无法连接到它。如何在IIS中设置的System.Url对象中设置端口号,以便我的应用程序可以连接到Web服务。

5 个答案:

答案 0 :(得分:4)

您通常会通过附加端口来执行此操作:

http://www.example.com:81/path/to/page

答案 1 :(得分:4)

使用表单http://example.com:8080/中的URI,其中8080​​可以是任何其他

答案 2 :(得分:0)

我认为,如果您的网络服务的Uri是http://webservice/,那么您可能只需要http://webservice:1234,其中1234是您的新端口..

答案 3 :(得分:0)

  • WebRequest.Createstring parameter一起使用:

    WebRequest.Create("http://{server}:{port});
    
  • WebRequest.Createuri parameter一起使用:

    Uri myUri = new Uri("http://{server}:{port}");
    WebRequest.Create(Uri);
    

答案 4 :(得分:0)

确定在远程计算机上运行的IIS的端口并不容易。要么您需要使用不同的方式来传达配置(如服务),要么使用可以检查所有可能端口的端口扫描程序(不推荐)。

,如果IIS在本地计算机上运行,​​则可以使用appcmd命令获取在IIS中运行的站点列表。

appcmd list site

如果您想在C#中以编程方式执行此操作,您可以执行以下操作:

// Setup ProcessStartInfo
var processInfo = new ProcessStartInfo();
processInfo.FileName = Environment.ExpandEnvironmentVariables("%windir%\system32\inetsrv\appcmd.exe");
processInfo.Arguments = "list site";
processInfo.RedirectStandardOutput = true;
processInfo.UseShellExecute = false;

// Start the process
var process = new Process();
process.StartInfo = processInfo; 
process.Start(processInfo);

// Capture the output and wait for exit
var output = process.StandardOutput.ReadToEnd();
process.WaitForExit();

// Parse the output
var ports = Regex.Matches(output, ":([0-9]+):");
foreach (Match port in ports)
{
    // TODO: Do something with the ports here
    Console.WriteLine(port.Groups[1].Captures[0].Value);
}