use*_*401 4 asp.net wcf asynchronous .net-core asp.net-core-2.0
我在asp.net core 2.0中将wcf服务端点添加到了连接的服务中,然后尝试使用它,但是对于客户端,只有以..async结尾的功能
我不想使用... async。但是没有.async就没有功能
这有什么问题我该怎么办?
而不是使用
var response = SystemClient.SearchCountriesAsync(....
Run Code Online (Sandbox Code Playgroud)
我想用那个
var response = SystemClient.SearchCountries(...
Run Code Online (Sandbox Code Playgroud)
但它给那个错误
错误CS1061'SystemClient'不包含'SearchCountries'的定义,并且找不到扩展方法'SearchCountries'接受类型为'SystemClient'的第一个参数(您是否缺少using指令或程序集引用?)
有一种方法可以在 Visual Studio 2019 中的 .NET 核心项目中生成同步方法。
向您的 .NET 核心项目添加 WCF Web 服务引用的向导Generate Synchronous Operations
在第三步“客户端选项”中有一个选项:
确保选中它,因为默认情况下它是未选中的。
您的客户端没有公开同步方法,但这对您来说应该不是问题。
无需异步调用该方法,只需执行以下操作:
response = SystemClient.SearchAirportsAsync(credentials, SystemHelperLanguageTypes.English, SystemHelperSearchTypes.CodeSearch, "ist").Result;
Run Code Online (Sandbox Code Playgroud)
这将同步调用该方法,因为它将阻止该调用。在此处查看John Skeets的答案。
话虽这么说,我建议您使用提供的异步方法。为了支持这一点,您必须将“动作”签名更改为此:
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();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2982 次 |
最近记录: |