C# 从Microsoft Translate服务使用GetLanguageNames时发生InternalServerError

C# 从Microsoft Translate服务使用GetLanguageNames时发生InternalServerError,c#,microsoft-cognitive,language-translation,C#,Microsoft Cognitive,Language Translation,我正在为Microsoft认知翻译服务API开发一个包装器,并使用RestSharp作为主要驱动程序 到目前为止,我已经实现了/Translate和/GetLanguagesForTranslate(返回语言代码),但在尝试实现/GetLanguageNames时遇到了一堵墙 下面是一段令人不快的代码: public void EnrichCodesWithNames(IEnumerable<Language> languageCodes) { var

我正在为Microsoft认知翻译服务API开发一个包装器,并使用RestSharp作为主要驱动程序

到目前为止,我已经实现了/Translate和/GetLanguagesForTranslate(返回语言代码),但在尝试实现/GetLanguageNames时遇到了一堵墙 下面是一段令人不快的代码:

    public void EnrichCodesWithNames(IEnumerable<Language> languageCodes)
    {
        var request = new RestRequest(resource, Method.POST);
        request.AddParameter("appid", _tokenRefresher.BearerToken);         
        request.AddParameter("locale", "nb-NO");
        request.AddParameter("languageCodes", string.Join(",", languageCodes.Where(c => !c.Code.Contains("-")).Select(c => c.Code).ToArray()));            

        var result = _restClientTranslation.Execute(request);
        if(result.StatusCode == HttpStatusCode.OK)
        {
            var element = result.Content;
        }
    }
public void EnrichCodesWithNames(IEnumerable languageCodes)
{
var请求=新的重新请求(资源,方法.POST);
request.AddParameter(“appid”,_tokenrefresh.BearerToken);
request.AddParameter(“区域设置”、“编号”);
request.AddParameter(“languageCodes”,string.Join(,”,languageCodes.Where(c=>!c.Code.Contains(“-”))。选择(c=>c.Code.ToArray());
var result=_restClientTranslation.Execute(请求);
if(result.StatusCode==HttpStatusCode.OK)
{
var元素=结果.内容;
}
}
根据,我需要将locale指定为两个字母的小写字符串和ISO 3166两个字母的大写亚文化代码。我假设“nb NO”是正确的?(我也试过“no-NB”)。文档中没有指定破折号、逗号或其他任何内容,因此它非常不清楚

第二件事是语言代码本身。文档说明我应该提供一个语言代码的字符串数组,并且我正在插入调用/GetLanguagesForTranslate

结果是200 OK,但是,我得到一个内部服务器错误,并显示以下消息:

服务器在处理请求时遇到错误。有关详细信息,请参阅服务器日志


我对可能发生的错误感到茫然。我们将不胜感激

这有帮助吗?下面是一个使用
curl
调用
GetLanguageNames
GetLanguagesForTranslate
的示例

curl -H "Authorization: Bearer %Bearer%" https://api.microsofttranslator.com/v1/http.svc/GetLanguageNames

curl -H "Authorization: Bearer %Bearer%" https://api.microsofttranslator.com/v2/http.svc/GetLanguagesForTranslate
获取上述承载令牌,并使用以下方法将其转换为环境变量:

curl -k --data "" "https://api.cognitive.microsoft.com/sts/v1.0/issueToken" -H "Ocp-Apim-Subscription-Key:<your key>" > Bearer.txt
set /p Bearer= < Bearer.txt
curl-k——数据”“”https://api.cognitive.microsoft.com/sts/v1.0/issueToken“-H”Ocp Apim订阅密钥:”>Bearer.txt
set/p承载=

在编码之前,始终使用
curl
对API调用进行原型化。它简化了学习过程。

没有帮助。我已经使用承载令牌实现了几个方法。我得到了一个200 OK,但是消息的内容显示InternalServerError。另外,您提供的示例来自API的v1。我的OPNo中有一个指向当前版本文档的链接。您使用的是API的v1,该API即将失效。要使用的正确URL是:,文档中说明您应该使用带有指定参数的POST请求。你的例子不可能奏效。对该url的GET请求将简单地返回翻译器的主页。以下是文档:如果您可以显示实际的REST请求和响应数据,这样我们就不会猜测您正在使用的“languageCodes”参数值、URL等。此外,您是否使用web测试控制台重现问题,还是仅仅在你的代码中?我得到的只是内部服务器错误和斜体文字。到目前为止,大多数其他方法的实现都没有任何问题。只有包含内部服务器错误的XML,以及包含错误的子节点。它要求我查看服务器日志,当然,我无法访问这些日志