如何解决使用自定义的FirstAzureSearchApp版本在处理您的请求时出现错误要求编号:1
每当我尝试在“ FirstAzureSearchApp”上进行任何搜索时,都会发生错误。错误页面如下所示:“'处理您的请求时发生错误。''请求ID:1''开发模式''交换至开发环境将显示有关所发生错误的更多详细信息。 “不应在已部署的应用程序中启用开发环境,因为它可能导致异常显示的敏感信息显示给最终用户。对于本地调试,可以通过将ASPNETCORE_ENVIRONMENT环境变量设置为Development并重新启动应用程序来启用开发环境。 / p>
我尝试从“开发”更改为“生产”(如其他主题所建议),但我仍然得到相同的结果。使用Visual Studio Breakpoints,我在特定行的文件HomeController.cs上收到错误:model.resultList = await _indexClient.Documents.SearchAsync(model.searchText,parameters);当我将异步方法更改为顺序方法时,没有得到该错误,但在一行上显示了错误:await RunQueryAsync(model);第一次运行该行,它可以正常运行,但是在搜索时会循环返回,而第二次则给出上面出现的相同错误。
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using VideoGame.Models;
using Microsoft.Extensions.Configuration;
using Microsoft.Azure.Search;
using Microsoft.Azure.Search.Models;
namespace VideoGame.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
[HttpPost]
public async Task<ActionResult> Index(SearchData model)
{
try
{
// Ensure the search string is valid.
if (model.searchText == null)
{
model.searchText = "";
}
// Make the Azure Cognitive Search call.
await RunQueryAsync(model);
}
catch
{
return View("Error",new ErrorViewModel { RequestId = "1" });
}
return View(model);
}
[ResponseCache(Duration = 0,Location = ResponseCacheLocation.None,NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
private static SearchServiceClient _serviceClient;
private static ISearchIndexClient _indexClient;
private static IConfigurationBuilder _builder;
private static IConfigurationRoot _configuration;
private void InitSearch()
{
// Create a configuration using the appsettings file.
_builder = new ConfigurationBuilder().AddJsonFile("appsettings.json");
_configuration = _builder.Build();
// Pull the values from the appsettings.json file.
string searchServiceName = _configuration["SearchServiceName"];
string queryApiKey = _configuration["SearchServiceAdminApiKey"];
// Create a service and index client.
_serviceClient = new SearchServiceClient(searchServiceName,new SearchCredentials(queryApiKey));
_indexClient = _serviceClient.Indexes.GetClient("games");
}
private async Task<ActionResult> RunQueryAsync(SearchData model)
{
InitSearch();
var parameters = new SearchParameters
{
// If Select is empty,all values will be returned,which can be inefficient.
Select = new[] { "GameName","Description" }
};
// For efficiency,the search call should be asynchronous,so use SearchAsync rather than Search.
model.resultList = await _indexClient.Documents.SearchAsync<Game>(model.searchText,parameters);
// Display the results.
return View("Index",model);
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。