如何确保我的C#net;“网络服务”;总是在共享主机中运行

如何确保我的C#net;“网络服务”;总是在共享主机中运行,c#,web-services,asmx,C#,Web Services,Asmx,我有一个c#.net wpf应用程序,它每天向Web服务发送数据。 我计划在共享主机上托管我的Web服务 我的问题是如何确保我的Web服务始终处于启动和运行状态?i、 e如果我的Web服务器停机几天,我需要注意什么?如果一台服务器出现故障,我是否需要维护多台服务器?另一台服务器是否可用? 要实现这一点,我需要提到wpf windows应用程序中的两个服务器ip地址吗 我搜索过谷歌,但找不到正确答案。 任何来自社区的链接都将不胜感激。您在谷歌上找不到答案的原因是没有正确的答案。根据应用程序的需要,

我有一个c#.net wpf应用程序,它每天向Web服务发送数据。 我计划在共享主机上托管我的Web服务

我的问题是如何确保我的Web服务始终处于启动和运行状态?i、 e如果我的Web服务器停机几天,我需要注意什么?如果一台服务器出现故障,我是否需要维护多台服务器?另一台服务器是否可用? 要实现这一点,我需要提到wpf windows应用程序中的两个服务器ip地址吗

我搜索过谷歌,但找不到正确答案。
任何来自社区的链接都将不胜感激。

您在谷歌上找不到答案的原因是没有正确的答案。根据应用程序的需要,每个人处理这些问题的方式都不同。为了回答你们的一些问题,我真的只能提供一般性的建议,甚至这些都只是我解决这个问题的方法:

我的问题是如何确保我的Web服务始终处于启动和运行状态

最大化正常运行时间很重要,可能需要仔细设计。您需要优雅地处理错误条件,并能够处理向您抛出的任何输入。一个警告是,虽然正常运行时间很重要,但数据的准确性可能更重要。如果是这样的话,您的Web服务关闭可能比看起来是打开的好,但它会破坏数据

如果我的Web服务器停机几天,我需要注意什么

您需要对客户端应用程序进行编码,使其能够正确地对数据进行排队,并在服务备份时发送数据。此外,您需要在您的服务中保持智能(即,不要假设上载数据==数据日期)。不要忘记,客户端应用程序也可能一次停机几天(自然灾害、断电、维护停机、周末崩溃……)

如果一台服务器出现故障,我是否需要维护多台服务器?另一台服务器是否可用

要实现这一点,我需要提到wpf windows应用程序中的两个服务器ip地址吗`

这绝对是一个选择。冗余允许您在服务器上执行维护或升级,同时最大限度地减少停机时间。有很多方法可以做到这一点。我可能会使用多个FQDN。因此,我会让
server1.example.com
server2.example.com
分别指向不同的服务器(理想情况下位于不同的数据中心)。我也会让这些服务器的DNS条目上有一个非常低的TTL,所以如果它们开始下降,我可以将服务器交换到一个新的IP

然后在您的客户端应用程序中,您可以在两台服务器之间进行循环,也可以使用一台主服务器,另一台只是作为备份

说到这里,很多人在设置这样的东西时忘记的一点是测试。您需要测试一台服务器停机,两台服务器停机,切换DNS和您能想到的任何其他排列,以确保您的冗余解决方案工作正常、可扩展且不会导致其他问题。

我有两个建议: 1.调用web服务方法的一个方法,并对其进行异常处理。 2.从
部分获取动态URL,然后执行httprequest检查URL是否有效

解决方案1示例:

[WebMethod]
public DateTime GetCurrentServerTime()
{
     return System.DateTime.UtcNow.ToString("yyyyMMddZHHmmss");
}
在您的申请中:

catch (System.Net.WebException ex)
{

messgabebox.show( "Your Web Service not available");
}
它会导致大约10秒的响应

解决方案2示例:

HttpWebRequest objRequest = (System.Net.HttpWebRequest)HttpWebRequest.Create(strWebServiceUrl);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)objRequest.GetResponse();

if (myHttpWebResponse.StatusCode != HttpStatusCode.OK)
{

DisplayMessage("Your Web Service not available" + "\r" + "Please try after some time");

return;
}

我认为这是检查Web服务可用性的更好方法。

这是WCF服务还是传统的ASMX服务?这是简单的ASMX服务。谢谢你的回答。我将实施你的技术。