我在asp.net core 2.0中将wcf服务端点添加到连接服务然后我尝试使用它,但是对于客户端,只有以..async结束的函数
我不想使用... async.But没有.async没有功能
这有什么问题?我该怎么办?
而不是使用
var response = SystemClient.SearchCountriesAsync(....
我想用那个
var response = SystemClient.SearchCountries(...
但它给出了错误
错误CS1061' SystemClient'不包含' SearchCountries'的定义没有扩展方法' SearchCountries'接受类型' SystemClient'的第一个参数。可以找到(你错过了使用指令或程序集引用吗?)
答案 0 :(得分:5)
您的客户端不公开同步方法,但这对您来说不应该是一个问题。
不是异步调用方法,而是执行此操作:
response = SystemClient.SearchAirportsAsync(credentials, SystemHelperLanguageTypes.English, SystemHelperSearchTypes.CodeSearch, "ist").Result;
这会同步调用该方法,因为它会阻止调用。检查John Skeets回答here。
话虽如此,我建议您使用提供的异步方法。为了支持您,您必须将Action签名更改为:
public async Task<IActionResullt> Index()
{
SystemClient SystemClient = new SystemClient();
Credential credential = new Credential();
credential.UserName = "username";
credential.UserPassword = "****";
var response1 = await SystemClient.SearchCountriesAsync(credentials, SystemHelperLanguageTypes.English, SystemHelperSearchTypes.CodeSearch, "TR");
var response = await SystemClient.SearchAirportsAsync(credentials, SystemHelperLanguageTypes.English, SystemHelperSearchTypes.CodeSearch, "ist");
//Do whatever you do with those responses
ViewBag.Language = "ar";
return View();
}
答案 1 :(得分:4)