Skip to main content
 首页 » 编程设计

c#之带有 ASP.NET Web 应用程序的 Bluemix 服务

2024年02月05日37shanyou

我正在尝试在 IBM Bluemix 上构建一个 ASP.NET Web 应用程序并将其与某些 Watson 服务连接。

目前,我只能从目录中获取 ASP.NET 5 Cloudant Starter 应用程序。从我看到的一些 youtube 视频中,有一个带有 ASP.NET 和 Watson 问答服务的示例,但找不到了。

有人可以帮助让 .Net 与 IBM Bluemix Watson 服务一起工作吗?我想要 TTS 和 Visual Recognition,但任何服务连接方面的帮助都有助于了解我的解决方案中缺少的内容。

感谢您的帮助。

请您参考如下方法:

Watson 问答服务是 replaced通过一些其他服务。现在有一个使用视觉识别服务的示例可用 on github .此示例提供了一个 VisualRecognitionService 类,它展示了如何使用 HttpClient 调用 Watson REST API。

Startup.cs 中的 Startup 函数展示了如何将 VCAP_SERVICES 环境变量解析为 JSON 对象,并将这些值存储在应用程序的配置中,其中 VisualRecognitionService 的构造函数可以访问它们以在调用 REST API 时使用。

VisualRecognitionService 中的 VrClient 函数创建并返回一个 HttpClient,其中包含联系 Watson REST API 所需的请求 header ,包括 X-Watson-Learning-Opt-Out header ,用于选择不与 Watson 服务共享数据。

private HttpClient VrClient() 
{ 
    var httpHandler = new HttpClientHandler() 
    { 
        AllowAutoRedirect = false, 
        AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate, 
        UseCookies = true, 
        CookieContainer = new CookieContainer() 
    }; 
 
    var auth = Convert.ToBase64String(Encoding.ASCII.GetBytes(_vrCreds.Username + ":" + _vrCreds.Password)); 
 
    HttpClient client = HttpClientFactory.Create(httpHandler, new LoggingHandler()); 
    client.BaseAddress = new Uri(_vrCreds.Url); 
    client.DefaultRequestHeaders.Accept.Clear(); 
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", auth); 
 
    if (learningOptOut) 
    { 
        client.DefaultRequestHeaders.Add("X-Watson-Learning-Opt-Out", learningOptOut.ToString()); 
    } 
 
    return client; 
} 

使用 VrClient 的最简单示例是 VisualRecognitionService 中的 GetClassifiersAsync 方法,它检索可用图像分类器列表(默认分类器 +任何用户创建的分类器):

public async Task<ClassifiersResponse> GetClassifiersAsync() 
{ 
    ClassifiersResponse model = null; 
    using (var client = VrClient()) 
    { 
        try 
        { 
            var response = await client.GetAsync("api/v2/classifiers?version=" + VersionReleaseDate); 
 
            var msg = string.Format("{0} {1}", response.StatusCode, response.ReasonPhrase); 
            Console.WriteLine(msg); 
            if (response.IsSuccessStatusCode) 
            { 
                model = await response.Content.ReadAsAsync<ClassifiersResponse>(); 
            } 
        } 
        catch (Exception ex) 
        { 
            Console.WriteLine(ex.StackTrace); 
        } 
    } 
    return model; 
} 

ClassifiersResponse 模型使用 JsonProperty 属性将 JSON 响应映射回 .Net 属性。

public class ClassifiersResponse 
{ 
    [JsonProperty("classifiers")] 
    public Classifier[] Classifiers { get; set; } 
 
    public ClassifiersResponse() 
    { 
        Classifiers = new Classifier[0]; 
    } 
} 

可以使用类似的方法访问其他 Watson 服务,以调用它们的 REST API。

希望这能让您朝着正确的方向前进。