Pregunta

Tengo estos métodos en un formulario 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());
}
}

Cuando haga clic en el botón 1 para copiar el resultado del Portapapeles Obtenga la excepción: la conexión de corriente se debe configurar en el modo de apartamento de un solo hilo (STA) antes de llamar a OLE.Es la primera vez que trato con algo como esto. ¿Qué se supone que debo hacer para resolver este problema?Gracias por ayudar.

¿Fue útil?

Solución

como MSDN estados,

La clase del portapapeles solo se puede usar en hilos establecidos en un solo hilo Modo Apartamento (STA).

No debe requerirse la configuración de STA en ASP.NET.Pero, ¿está seguro de que desea operar en el Portapapeles en el lado del servidor?¿Entiende que operará en el portapapeles servidor , no el cliente?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top