LiangShuainiu 2018-11-02 07:59 采纳率: 66.7%
浏览 385
已结题

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);
        }
    }
}

}
}

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

  • 写回答

4条回答 默认 最新

  • 奔跑的小鱼儿 2018-11-02 08:08
    关注

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

    评论

报告相同问题?

悬赏问题

  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办
  • ¥15 vue2登录调用后端接口如何实现