0

HttpClientユーザーが作成した文字列をサーバー API に POST し、結果を取得するために使用しています。以前は、ユーザーが文字列を入力できるようにするために a を使用していましたが、きれいな色が欲しかったので、を aTextBoxに置き換えようとしましたが、惨めに失敗しました。使用するとすべて正常に機能しましたが、使用すると「アクセスが拒否されました」というメッセージが表示されます。メソッドでからテキストを取得します。テキストを取得する場所、または文字列を. 文字列は、 からテキストを追加する前後に編集され、別のメソッドに送信されます。TextBoxRichEditBoxTextBoxRichEditBoxRichEditBoxDocument.GetTextFormUrlEncodedContentRichEditBox

TL:DRTextBox : aHttpClientを使用して aから文字列を送信することはできますが、をaPOSTに置き換えた場合は機能しません。TextBoxRichEditBox

完全なエラー メッセージは次のとおりです。

System.UnauthorizedAccessException: 'アクセスが拒否されました。(HRESULT からの例外: 0x80070005 (E_ACCESSDENIED))'

なぜこれが起こっているのかについて、誰かが解決策または説明を持っていますか?

編集

コードサンプル:

private async void RichEditBox_KeyUp(object sender, KeyRoutedEventArgs e)
{
    if (e.Key == VirtualKey.Enter)
    {
        await RunCode();    //The error points to this line
    }
}

private async void RunCode()
{
    string code = CodeBefore;
    foreach (RichEditBox tb in editStack.Children)  //If I comment out the foreach loop I don't get any errors
    {
        if (tb.Tag.ToString() == "input")
        {
            tb.Document.GetText(Windows.UI.Text.TextGetOptions.None, out string thisLine);
            code += thisLine;
        }
    }
    code += CodeAfter;
    await RunCSharp(code);
}

private async Task<Code> RunCSharp(string code)
{
    Code re = new Code();

    using (HttpClient client = new HttpClient())
    {
        FormUrlEncodedContent content = new FormUrlEncodedContent(new[]
        {
                new KeyValuePair<string, string>("LanguageChoiceWrapper", "1"),
                new KeyValuePair<string, string>("Program", code),              //If I replace code with a string  I don't get any errors
                new KeyValuePair<string, string>("ShowWarnings", "false")
            });

        try
        {
            HttpResponseMessage msg = await client.PostAsync("http://mywebaddress.com/run", content);
            re = JsonConvert.DeserializeObject<Code>(await msg.Content.ReadAsStringAsync());
        }
        catch { }
    }

    return re;
}
4

0 に答える 0