gpt4 book ai didi

c# - 如何在 C# 中测试与未知 Web 服务的连接?

转载 作者:可可西里 更新时间:2023-11-01 07:53:41 26 4
gpt4 key购买 nike

我正忙于编写一个监视 RAS 连接状态的类。我需要测试以确保连接不仅已连接,而且可以与我的 Web 服务通信。由于此类将在许多 future 项目中使用,因此我想要一种方法来测试与 web 服务的连接而无需对此一无所知。

我正在考虑将 URL 传递给类,这样它至少知道在哪里可以找到它。对服务器执行 ping 测试是不够的。有可能服务器可用,但服务不可用。

我如何才能有效地测试我是否能够从 Web 服务获得响应?

最佳答案

您可以尝试以下测试网站是否存在的方法:

public static bool ServiceExists(
string url,
bool throwExceptions,
out string errorMessage)
{
try
{
errorMessage = string.Empty;

// try accessing the web service directly via it's URL
HttpWebRequest request =
WebRequest.Create(url) as HttpWebRequest;
request.Timeout = 30000;

using (HttpWebResponse response =
request.GetResponse() as HttpWebResponse)
{
if (response.StatusCode != HttpStatusCode.OK)
throw new Exception("Error locating web service");
}

// try getting the WSDL?
// asmx lets you put "?wsdl" to make sure the URL is a web service
// could parse and validate WSDL here

}
catch (WebException ex)
{
// decompose 400- codes here if you like
errorMessage =
string.Format("Error testing connection to web service at" +
" \"{0}\":\r\n{1}", url, ex);
Trace.TraceError(errorMessage);
if (throwExceptions)
throw new Exception(errorMessage, ex);
}
catch (Exception ex)
{
errorMessage =
string.Format("Error testing connection to web service at " +
"\"{0}\":\r\n{1}", url, ex);
Trace.TraceError(errorMessage);
if (throwExceptions)
throw new Exception(errorMessage, ex);
return false;
}

return true;
}

关于c# - 如何在 C# 中测试与未知 Web 服务的连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/330496/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com