1

私は、asp.net で URL を短縮するための単純な Web フォーム アプリケーションを使用しています。関数を正常に作成しました。URL を変更すると、自動的にクリップボードにコピーされます。

次のような変数に格納するテキスト値を作成しました

   shortUrl.Text = shortURL; 

この後、クリップボード関数を呼び出しています

 clip_board(shortURL);

私の機能は

 public void clip_board(string shortUrl)
    {
       MessageBox.Show(shortUrl);
       Clipboard.SetText(shortUrl);

    }

ここでは、メッセージ ボックスに短縮 URL が表示されますが、次のClipboard.SetText()ようなエラーが表示されます。

OLE 呼び出しを行う前に、現在のスレッドをシングル スレッド アパートメント (STA) モードに設定する必要があります。Main 関数に STAThreadAttribute がマークされていることを確認します。

このエラーを克服するにはどうすればよいですか?

4

1 に答える 1

3

あなたはそれが ASP.NET アプリケーションだと言います。この場合、.NET コードはサーバー上で実行されるため、クライアントのクリップボードにアクセスすることも、.NET などの WinForms メソッドを呼び出すこともできませんMessageBox.Show

コメントへの応答:

しかし、メッセージボックスに正確な値が表示されます...

Visual Studio と Cassini Web サーバーを使用してデバッグしていますか? その場合MessageBox.Show、現在のセッションのコンテキストで実行されているため、の出力が表示される場合があります。ただし、これは IIS に展開する場合には機能しません。

于 2013-03-19T08:44:06.167 に答える