Исключение: Однототовая квартира (STA) в веб-сайте ASP.NET

StackOverflow https://stackoverflow.com//questions/20031005

  •  21-12-2019
  •  | 
  •  

Вопрос

У меня есть эти методы в веб-форме ASP.NET:

public partial class currencies : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{

}

public class Rate
{
    public string to { get; set; }
    public string from { get; set; }
    public double rate { get; set; }
}

double ConvertedAmount { get; set; }

public void Convert(object sender, EventArgs e)
{
    DateTime theDate = DateTime.UtcNow;
    string todayDateTime = theDate.ToString("f");
    double amount = 0d;
    if (double.TryParse(txtAmount.Text.Trim(), out amount))
    {
        string url = string.Format("http://rate-exchange.appspot.com/currency?from={0}&to={1}", ddlFrom.SelectedItem.Value, ddlTo.SelectedItem.Value);
        WebClient client = new WebClient();
        string rates = client.DownloadString(url);
        Rate rate = new JavaScriptSerializer().Deserialize<Rate>(rates);
        ConvertedAmount = amount * rate.rate;
        Label1.Text = ddlFrom.SelectedItem.Value + ": " + amount;
        Label2.Text = ddlTo.SelectedItem.Value + ": " + ConvertedAmount;
        Label3.Text = "Rate as at " + todayDateTime + " is:";
        Label4.Text = " 1 " + ddlFrom.SelectedItem.Value + " = " + rate.rate + " " + ddlTo.SelectedItem.Value;

    }
    else
    {
        ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Invalid amount value.');", true);
    }
}


protected void Button1_Click(object sender, EventArgs e)
{   
    Clipboard.SetText(ConvertedAmount.ToString());
}
}
.

Когда я нажимаю на кнопку 1, чтобы скопировать результат в буфер обмена, я получаю исключение: текущий поток должен быть установлен в режиме Ole Thread (STA) перед вызовом OLE.Это первый раз, когда я имею дело с чем-то вроде этого. Что я должен сделать, чтобы решить эту проблему?Спасибо за помощь.

Это было полезно?

Решение

as as msdn Штаты,

Класс буфера обмена можно использовать только в потоках, установленных на одну нить Режим апартаментов (STA).

Настройка STA в ASP.NET не должна потребоваться.Но вы уверены, что хотите работать в буфере обмена на стороне сервера?Вы понимаете, что он будет работать на Server буфера обмена, а не один клиент?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top