1 c# asp.net if-statement asp.net-web-api
检查WebAPI是否可用的最佳方法是什么?我想在一个简单的if()声明中检查它,是否可以保持它相对简单?如果有更好的方法来检查.像一个尝试/捕获.就告诉我嘛.谢谢
我想在我的代码隐藏Page_Load方法中包含if语句.因此,当API不可用时,我可以阻止该网站.
我试过这个:
try
{
WebClient client = new WebClient();
client.UseDefaultCredentials = true;
string response = client.DownloadString(baseuri + Constants.API_LEHRLING + lehrlingID);
}
catch (Exception ex)
{
string url = "AccessDenied.aspx";
Server.Transfer(url, true);
}
Run Code Online (Sandbox Code Playgroud)
我想从我的webapi下载一个字符串.我的uri是自动构建的.如果发生异常,我会参考我的错误网站.
还有其他想法吗?这种方法有效,但不是很干净
这样的事情应该这样做(假设你的API有一个支持相当简单的GET请求的方法).如果您没有收到HTTP 200(OK)响应,则可能存在问题,您应该采取措施使您的网站无法使用(例如隐藏所有内容).
如果你有一个,最好将它放在你的母版页中:
protected void Page_Load(object sender, EventArgs e)
{
try
{
System.Net.WebClient client = new System.Net.WebClient();
string result = client.DownloadString("http://www.example.com/api/TestMethod");
}
catch (System.Net.WebException ex)
{
//do something here to make the site unusable, e.g:
myContent.Visible = false;
myErrorDiv.Visible = true;
}
}
Run Code Online (Sandbox Code Playgroud)
假设这是你的流程:
在发出实际请求之前想要检查API是没有意义的.当然,简单的"GET"可能会成功,然后实际的请求可能会失败,并没有证明什么.API可以在两个请求之间停止,或者"检查"请求执行与实际请求不同的操作,导致后者无论如何都会失败.
此外,鉴于大多数网络I/O都是非常漏洞的抽象,无论如何,您需要围绕它们的异常处理代码.因此,无论您使用HttpWebRequest,WebClient还是HttpClient,您都需要将代码包装在一个try-catch块中.
请参阅如何查看HttpClient是否连接到脱机网站,.Net HttpWebRequest.GetResponse()在返回http状态代码400(错误请求)时引发异常,如何检查Web服务器是否已启动?(C#)等.
但是,似乎API会为您处理授权和身份验证,并且API有时会"失败",导致您的代码将此检测为有效尝试使用您的网站,因此您似乎只需要修复实际的代码执行API调用.没有if()声明会帮助你.
| 归档时间: |
|
| 查看次数: |
8142 次 |
| 最近记录: |