Exception: Appartement à fil unique (STA) dans le site Web ASP.NET
Question
J'ai ces méthodes dans un formulaire Web 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());
}
}
Lorsque je clique sur le bouton 1 pour copier le résultat dans le presse-papiers, je reçois l'exception: le fil de courant doit être réglé sur le mode appartement à fil unique (STA) avant d'appeler Ole.C'est la première fois que je traite avec quelque chose comme ça. Qu'est-ce que je suis censé faire pour résoudre ce problème?Merci d'avoir aidé.
La solution
comme MSDN états,
La classe du presse-papiers ne peut être utilisée que dans des threads définies sur un seul thread Mode appartement (STA).
Réglage STA dans ASP.NET ne doit pas être requis.Mais êtes-vous sûr que vous souhaitez utiliser sur le presse-papiers du côté du serveur?Comprenez-vous qu'il fonctionnera sur le presse-papier Server , pas le client?