我有一些消耗Web服务的代码。我不想每次都从服务中检索会话密钥,我想尝试使用我设置的会话变量的响应,并且如果出现403错误,请获取新的会话密钥并重试。嵌套Try/Catch语句替代
在我有限的心智嵌套try/catch
声明是有道理的,但我只是很好,意识到必须有一个更好的方法。我在这里读了几篇文章,提到诸如lambda expressions with using statements
和Helpers
之类的东西,但这些也可能是来自外行星科学对我的礼物。
总是乐于学习我想知道如果有人有建议(有详细信息或指向细节的链接)?这里的一切工作,我只需要一个比嵌套try
声明更好的方法(请和谢谢)。一如既往,你们摇滚!
public string getMySessionkey
去与登录凭证的服务器,以获得一个会话密钥(要求所有其他查询),如果没有一个会话密钥已经设置
searchPacket = stringbuilder with parameters and session key
if (Session["MySessionKey"] != null)
{
sessionKee = Session["MySessionKey"].ToString();
}
else
{
sessionKee = getMySessionkey(_cbE, _cbP);
System.Web.HttpContext.Current.Session.Add("MySessionKey", sessionKee);
}
try
{
mySearchResults = getResults(searchPacket.ToString());
vbResultz += Server.HtmlEncode(mySearchResults) ;
}
catch (WebException wx)
{
HttpWebResponse webresponse ;
webresponse = (HttpWebResponse)wx.Response;
switch (webresponse.StatusCode)
{
case HttpStatusCode.InternalServerError:
...
break;
case HttpStatusCode.Forbidden: // 403
vbResultz = "You aint got no valid session key!";
// code here to get a new session key and try again
break;
default:
throw;
}
}
工作就像一个魅力,thanx如此之多。尽管如此,仍然想了解lamba和助手。 – Darkloki
@ user116923我不太确定这将如何使您在这个特定问题上受益。 – Crono