asp.net 后台开线程写脚本提示异常“ 响应在此上下文中不可用”

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Hosting;
using System.Net.Sockets;
using System.Net;
using System.Text;
using System.IO;
using System.Threading;
namespace WebApplication1
{
public partial class login : System.Web.UI.Page
{
Socket clientsocket = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);//socket对象
int jiazai = 0;
protected void Page_Load(object sender, EventArgs e)
{

}
protected void btnlogin_Click(object sender, EventArgs e)
{
    if (txtid.Text == "" || txtpwd.Text == "" || !message.isnumber(txtid.Text))
    {
        Response.Write("<script>alert('账户不能为空且只能由数字组成!')</script>");
    }
    else
    {
        if (jiazai == 0)
        {
            IPAddress ipconn = IPAddress.Parse("192.168.43.225");
            //IPAddress ip=IPAddress.Parse("192.9.101.211");
            clientsocket.Connect(ipconn, 8885);//socket客户端连接
            Thread td = new Thread(recive);//这里是接收线程
            td.IsBackground = true;
            td.Start(clientsocket);//线程开启
            jiazai += 1;//开启一次之后就不用再开启了
        }
        string ip=jiakongge(getipv4(),20);
        byte[] sen=new byte[1024];
        sen = Encoding.UTF8.GetBytes(ip + "01" + jiakongge(txtid.Text, 10) + jiakongge(txtpwd.Text, 20));//这里是客户信息
        clientsocket.Send(sen);
    }
}
private void recive(object obj)
{
    Socket ss = (Socket)obj;
    while(true)
    {
        byte[] rec = new byte[1024];
        byte[] sen = new byte[1024];
        int len = ss.Receive(rec);//接收信息
        if (len > 0)
        {
            string taojiezi = Encoding.UTF8.GetString(rec);
            string answer = taojiezi.Substring(3, 1);
            switch (answer)
            {
                case "0":
                    Response.Write("<script>alert('没有此用户!');</script>");//此处报错
                    break;
                case "1":
                    Response.Write("<script>alert('密码错误!');</script>");
                    break;
                case "2":
                    sen = Encoding.UTF8.GetBytes(jiakongge(getipv4(), 20) + "99");
                    ss.Send(sen);
                    Response.Redirect("main.aspx");
                    break;
                case "3":
                    Response.Write("<script>alert('出现异常!');</script>");
                    break;
            }
        }
    }
}
private static string getipv4()//获取IPv4地址
{
    string hostname = Dns.GetHostName();
    IPHostEntry ipentry = Dns.GetHostEntry(hostname);
    for (int i = 0; i < ipentry.AddressList.Length; i++)
    {
        if (ipentry.AddressList[i].AddressFamily == AddressFamily.InterNetwork)
        {
            return ipentry.AddressList[i].ToString();
        }
    }
    return "";
}
private static string jiakongge(string s,int len)//固定字符串长度,不够右补空格
{
    int a;
    if (string.IsNullOrEmpty(s))
    {
        a = 0;
        return s;
    }
    else
    {
        a = s.Length;
        if (a < len)
        {
            for (int i = 0; i < (len - a); i++)
            {
                s = s + " ";
            }
            return s;
        }
        else
        {
            return s.Substring(0,len);
        }
    }
}

}
}

这是提示的报错:
图片说明

1、先确认你的前台web页面的<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >是否是W3C标准;如果不符合W3C标准,有时直接写是不行的,必须写成
2、是否有其他的js代码段与此处的alert()冲突;
3、你这个web页是框架里的页面吗?有时框架里的js执行是会莫名其妙的出问题的;

应该是和UI线程冲突了。
private System.Threading.SynchronizationContext m_SyncContext = System.ComponentModel.AsyncOperationManager.SynchronizationContext;

case "0":
{
m_SyncContext.Post(new System.Threading.SendOrPostCallback((p)=>
{
Response.Write("alert(&#39;没有此用户!&#39;);");//此处报错
}),null);
}

                break;

图片说明 @zhongyu627

不用Response,用这个 试试
ClientScript.RegisterStartupScript(GetType(), "message", "alert(&#39;改成这个&#39;);");

        前台只留个Button   
 <form id="form1" runat="server">
<div>
    <asp:Button ID="Button1" runat="server" Text="Button" 
        onclick="btnlogin_Click" />

</div>
</form>

            protected void btnlogin_Click(object sender, EventArgs e)
    {
            Thread th = new Thread(getipv4);
            th.Start();
    }
    private void getipv4()//获取IPv4地址
    {
        try
        {
            //Response.Write("<script>alert('我来自线程')</script>");
            ClientScript.RegisterStartupScript(GetType(), "message", "<script>alert('改成这个');</script>");
        }
        catch (Exception ex)
        {
                                    //catch加断点 看捕获异常
        }
    }