我有一些代码,当它执行时,它抛出一个IOException,说
该进程无法访问文件'filename',因为它正由另一个进程使用
这是什么意思,我能做些什么呢?
问:有没有更好的方法来处理SqlExceptions?
以下示例依赖于解释消息中的文本.
Eg1:如果表不存在,我有一个现有的try catch来处理.
忽略我可以检查表是否存在于第一位的事实.
try
{
//code
}
catch(SqlException sqlEx)
{
if (sqlEx.Message.StartsWith("Invalid object name"))
{
//code
}
else
throw;
}
Run Code Online (Sandbox Code Playgroud)
Eg2:没有try catch显示重复的键异常
if (sqlEx.Message.StartsWith("Cannot insert duplicate key row in object"))
Run Code Online (Sandbox Code Playgroud)
解决方案:我的SqlExceptionHelper的开始
//-- to see list of error messages: select * from sys.messages where language_id = 1033 order by message_id
public static class SqlExceptionHelper
{
//-- rule: Add error messages in numeric order and prefix the number above the method
//-- 208: Invalid object name '%.*ls'. …Run Code Online (Sandbox Code Playgroud) 我正在测试一个端点,我遇到了一些问题.
我只是HttpClient在一个循环中使用,每小时执行一次请求.
var httpClient = new HttpClient();
var message = httpClient.GetAsync(url).Result;
Console.WriteLine(message.StatusCode);
Run Code Online (Sandbox Code Playgroud)
有一段时间我得到这个例外:
System.Net.Http.HttpRequestException:发送请求时发生错误.---> System.Net.WebException:无法解析远程名称:'xxx'
经验是在异常之后,可以访问URL.在浏览器中,您只需刷新页面即可.
我仍然没有得到用户体验它的任何报告,所以我想知道它是否只是一个本地问题,但可以使用一些信息来帮助诊断.
有没有办法检查无法解析远程名称是由DNS问题还是由例外的Web服务器问题引起的?我可以获得更多信息,HttpCLient还是需要更高级的诊断工具?
是否有自动重试有意义的SQL Server存储过程错误的简明列表?显然,重试"登录失败"错误没有意义,但重试"超时"确实如此.我认为指定哪些错误重试可能比指定哪些错误不重试更容易.
那么,除了"超时"错误之外,还有哪些其他错误适合自动重试?
谢谢!
我正在尝试设置一种方法,该方法将尝试首先在默认端口(1433)上连接到 SQL Server,然后在失败时在其他端口(例如 7777)上连接。
我想避免重建连接字符串并在失败时尝试再次连接,因为此方法将按照配置的时间间隔执行,并且我希望消除尽可能多的开销。
我尝试了以下方法(由ConnectionStrings提供)
public void EstablishConnection()
{
string ConnectionString = "Data Source=127.0.0.1; Failover Partner=127.0.0.1,7777; Initial Catalog=foo;Connection Timeout = 3; Persist Security Info =True;User ID=<id>;Password=<password>";
try
{
SqlConnection Connection = new SqlConnection(ConnectionString);
Connection.Open();
}
catch (SqlException)
{
// Connection failed
}
}
Run Code Online (Sandbox Code Playgroud)
但根据这篇文章我的测试,它并没有按照我的预期方式工作。
我可以通过执行以下操作轻松解决此问题:
public void EstablishConnection()
{
string ConnectionString = "Data Source=127.0.0.1;Initial Catalog=foo;Connection Timeout = 3; Persist Security Info =True;User ID=<id>;Password=<password>";
try
{
SqlConnection Connection = new SqlConnection(ConnectionString);
Connection.Open();
}
catch (SqlException)
{ …Run Code Online (Sandbox Code Playgroud)