Azure sql database Azure逻辑应用程序内部服务器错误500
我正在尝试创建一个azure函数,该函数在逻辑应用程序中触发, 该函数的目的是对某些网站进行web爬网,获取所需信息,将其与Azure中的SQL Server数据库进行比较,如果我们已经拥有该信息,则进行比较(如果没有添加该信息) 我的问题是,每当我运行它时,我都会遇到Server500错误,我认为这是访问数据库造成的。帮忙Azure sql database Azure逻辑应用程序内部服务器错误500,azure-sql-database,azure-functions,azure-logic-apps,Azure Sql Database,Azure Functions,Azure Logic Apps,我正在尝试创建一个azure函数,该函数在逻辑应用程序中触发, 该函数的目的是对某些网站进行web爬网,获取所需信息,将其与Azure中的SQL Server数据库进行比较,如果我们已经拥有该信息,则进行比较(如果没有添加该信息) 我的问题是,每当我运行它时,我都会遇到Server500错误,我认为这是访问数据库造成的。帮忙 public static async Task<IActionResult> Run( [HttpTrigger(Authori
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req, ILogger log
)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string RequestBody = await new StreamReader(req.Body).ReadToEndAsync();
{
return await CrawlBlog(0, RequestBody);
}
}
private static async Task<IActionResult> CrawlBlog(int Picker, string req)
{
int BlogPicker = Picker;
string TheResult = req;
//Get the url we want to test
var Url = "";
if (BlogPicker == 0)
{
Url = "*********";
}
else if (BlogPicker == 1)
{
Url = "*********";
}
/*
else if (BlogPicker == 2)
{
Url = "https://azure.microsoft.com/en-in/blog/?utm_source=devglan";
}
*/
else
{
TheResult = "False we got a wrong pick";
return (ActionResult)new OkObjectResult
( new {TheResult });
}
var httpClient = new HttpClient();
var html = await httpClient.GetStringAsync(Url);
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(html);
//a list to add all availabel blogs we found
var Blog = new List<BlogStats>();
switch (BlogPicker)
{
case 0:
{
var divs =
htmlDocument.DocumentNode.Descendants("div")
.Where(node => node.GetAttributeValue("class", "").Equals("home_blog_sec_text")).ToList();
foreach (var divo in divs)
{
var Blogo = new BlogStats
{
Summary = divo.Descendants("p").FirstOrDefault().InnerText,
Link = divo.Descendants("a").FirstOrDefault().ChildAttributes("href").FirstOrDefault().Value,
Title = divo.Descendants("a").FirstOrDefault().InnerText
};
Blog.Add(Blogo);
}
break;
}
case 1:
{
var divs =
htmlDocument.DocumentNode.Descendants("div")
.Where(node => node.GetAttributeValue("class", "").Equals("post_header_title two_third last")).ToList();
foreach (var divo in divs)
{
//string TheSummary = "we goofed";
var ThePs = divo.Descendants("p").ToList();
var Blogo = new BlogStats
{
Summary = ThePs[1].GetDirectInnerText(),
Link = divo.Descendants("a").LastOrDefault().ChildAttributes("href").FirstOrDefault().Value,
Title = divo.Descendants("a").FirstOrDefault().InnerText
};
Blog.Add(Blogo);
}
break;
}
}
TheResult = await SqlCheck(Blog[0].Title, Blog[0].Summary, Blog[0].Link); //error 500
return (ActionResult)new OkObjectResult
(
new
{
TheResult
}
);
}
public static async Task<string> SqlCheck(string Tit, string Sumy, string Lin)
{
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
builder.DataSource = "flygon.database.windows.net";
builder.UserID = "*****";
builder.Password = "********";
builder.InitialCatalog = "torkoal";
System.Data.DataSet ds = new System.Data.DataSet();
SqlConnection connection = new SqlConnection(builder.ConnectionString);
connection.Open();
SqlCommand CheckCommand = new SqlCommand("SELECT * FROM TableBoto WHERE Link = @id3 ", connection);
CheckCommand.Parameters.AddWithValue("@id3", Lin);
SqlDataAdapter dataAdapter = new SqlDataAdapter(CheckCommand);
dataAdapter.Fill(ds);
int i = ds.Tables[0].Rows.Count;
if (i > 0)
{
return $" We got a Duplicates in title : {Tit}";
}
try
{
{
string query = $"insert into TableBoto(Title,Summary,Link) values('{Tit}','{Sumy}','{Lin}');";
SqlCommand command = new SqlCommand(query, connection);
SqlDataReader reader = await command.ExecuteReaderAsync();
reader.Close();
}
}
catch (SqlException)
{
// Console.WriteLine(e.ToString());
}
connection.Close();
return $" Success Ign +{Tit} + Ign {Sumy}+ Ign {Lin} Ign Success SQL ";
}
}
公共静态异步任务运行(
[HttpTrigger(AuthorizationLevel.Function,“get”,“post”,Route=null)]HttpRequest请求,ILogger日志
)
{
LogInformation(“C#HTTP触发器函数处理了一个请求。”);
string RequestBody=等待新的StreamReader(req.Body).ReadToEndAsync();
{
返回等待爬网日志(0,RequestBody);
}
}
私有静态异步任务爬网日志(整型选择器,字符串请求)
{
int BlogPicker=Picker;
字符串TheResult=req;
//获取我们要测试的url
var Url=“”;
如果(BlogPicker==0)
{
Url=“**********”;
}
else if(BlogPicker==1)
{
Url=“**********”;
}
/*
else if(BlogPicker==2)
{
Url=”https://azure.microsoft.com/en-in/blog/?utm_source=devglan";
}
*/
其他的
{
TheResult=“False我们选错了”;
返回(ActionResult)新的OkObjectResult
(新{TheResult});
}
var httpClient=新的httpClient();
var html=await httpClient.GetStringAsync(Url);
var htmlDocument=新的htmlDocument();
htmlDocument.LoadHtml(html);
//添加我们找到的所有可用标签博客的列表
var Blog=新列表();
交换机(BlogPicker)
{
案例0:
{
var divs=
htmlDocument.DocumentNode.substands(“div”)
.Where(node=>node.GetAttributeValue(“类”).Equals(home\u blog\u sec\u text)).ToList();
foreach(divs中的var divo)
{
var Blogo=新的BlogStats
{
Summary=divo.substands(“p”).FirstOrDefault().InnerText,
Link=divo.subjections(“a”).FirstOrDefault().ChildAttributes(“href”).FirstOrDefault().Value,
Title=divo.subjects(“a”).FirstOrDefault().InnerText
};
Blog.Add(Blogo);
}
打破
}
案例1:
{
var divs=
htmlDocument.DocumentNode.substands(“div”)
.Where(node=>node.GetAttributeValue(“类”).Equals(post_header_title two_third last)).ToList();
foreach(divs中的var divo)
{
//string TheSummary=“我们搞错了”;
var ThePs=divo.substands(“p”).ToList();
var Blogo=新的BlogStats
{
Summary=ThePs[1]。GetDirectInnerText(),
Link=divo.subscriptions(“a”).LastOrDefault().ChildAttributes(“href”).FirstOrDefault().Value,
Title=divo.subjects(“a”).FirstOrDefault().InnerText
};
Blog.Add(Blogo);
}
打破
}
}
TheResult=await SqlCheck(博客[0]。标题,博客[0]。摘要,博客[0]。链接);//错误500
返回(ActionResult)新的OkObjectResult
(
新的
{
结果
}
);
}
公共静态异步任务SqlCheck(字符串Tit、字符串Sumy、字符串Lin)
{
SqlConnectionStringBuilder=新的SqlConnectionStringBuilder();
builder.DataSource=“flygon.database.windows.net”;
builder.UserID=“*******”;
builder.Password=“*******”;
builder.InitialCatalog=“torkoal”;
System.Data.DataSet ds=新的System.Data.DataSet();
SqlConnection=newsqlconnection(builder.ConnectionString);
connection.Open();
SqlCommand CheckCommand=new SqlCommand(“从表格BOTO中选择*链接=@id3”,连接);
CheckCommand.Parameters.AddWithValue(“@id3”,Lin);
SqlDataAdapter dataAdapter=新的SqlDataAdapter(CheckCommand);
dataAdapter.Fill(ds);
int i=ds.Tables[0].Rows.Count;
如果(i>0)
{
return$“我们得到了一个重复的标题:{Tit}”;
}
尝试
{
{
字符串查询=$“插入到TableBoto(标题、摘要、链接)值({Tit}',{Sumy}',{Lin}');”;
SqlCommand=newsqlcommand(查询、连接);
SqlDataReader=等待命令。ExecuteReaderAsync();
reader.Close();
}
}
捕获(SqlException)
{
//Console.WriteLine(如ToString());
}
connection.Close();
返回$“Success Ign+{Tit}+Ign{Sumy}+Ign{Lin}Ign Success SQL”;
}
}
500 HTTP状态代码是一种通用代码,这意味着服务器由于某些问题无法处理请求,第一步: