You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET部署至Plesk服务器出现CS1061事件绑定错误求助

我之前部署ASP.NET项目到Plesk时也遇到过一模一样的CS1061错误,本地跑完全正常,一上服务器就找不到事件方法。结合你的代码和情况,给你几个肯定能帮到你的排查和解决步骤:

1. 核对页面指令与后台类的匹配性

先打开你的detail.aspx页面,检查顶部的<%@ Page %>指令,重点看Inherits和CodeBehind(或CodeFile)属性:

  • Inherits的值必须和后台.cs文件里的类名完全一致,包括命名空间。比如如果后台类是namespace testproject { public partial class vending_detail : Page { ... } },那页面里的Inherits应该是testproject.vending_detail,而不是错误的ASP.testproject_vending_detail_aspx(这个通常是自动生成的类名,说明你的页面和后台类没绑定对)。
  • 确保CodeBehind指向正确的.cs文件路径,比如CodeBehind="detail.aspx.cs"。

2. 检查Plesk的ASP.NET编译设置

Plesk的默认编译模式有时候会导致后台代码没被正确编译:

  • 登录Plesk,找到你的网站,进入「ASP.NET设置」;
  • 把「编译模式」改成「动态编译」(如果之前是预编译);
  • 同时确认「.NET框架版本」和你本地开发用的版本一致,比如都是.NET Framework 4.7.2。

3. 验证服务器文件完整性

有时候上传文件时会漏掉后台代码或者依赖文件:

  • 检查服务器上的网站目录,确认detail.aspx.cs和DAL/Class1.cs(或对应的DLL)都已经上传,没有缺失;
  • 如果你的项目是Web应用程序(不是网站),确保上传了编译好的BIN文件夹里的所有DLL文件。

4. 清理服务器的ASP.NET临时文件

IIS的临时编译缓存经常会搞事情:

  • 在Plesk里重启你的网站;
  • 如果还是不行,联系服务器管理员,或者通过Plesk的文件管理器,找到服务器上的临时ASP.NET文件目录(比如C:\Windows\Microsoft.NET\Framework\[你的.NET版本]\Temporary ASP.NET Files),删除对应网站的缓存文件夹,然后再次重启网站。

5. 确认事件方法的访问修饰符和拼写

虽然你本地正常,但还是再核对一遍:

  • 后台的loadArea_Click和RadioButtonList1_SelectedIndexChanged方法都是protected修饰的(你的代码里是对的,但如果不小心改成private就会报错);
  • 页面里的OnClick="loadArea_Click"和onselectedindexchanged="RadioButtonList1_SelectedIndexChanged"的方法名拼写、大小写和后台完全一致(C#大小写敏感,本地正常的话这条大概率没问题,但还是确认下)。

你的后台代码(detail.aspx.cs)

SqlConnection conn; SqlCommand cmd; SqlDataReader reader; string area; DAL.Class1 dalclass = new DAL.Class1(); ArrayList al = new ArrayList(); ArrayList itemInfo = new ArrayList(); int id = 0; String productdesc = ""; public string sendArea() { return area; } protected void Page_Load(object sender, EventArgs e) { try { if (!Page.IsPostBack) { if (Session["Order"] == null) { DataTable dt = new DataTable(); dt.Columns.Add("url"); dt.Columns.Add("name"); dt.Columns.Add("price"); dt.Columns.Add("quantity"); dt.Columns.Add("tot_price"); dt.Columns.Add("id"); dt.Columns.Add("displayinfo"); dt.Columns.Add("machineserialno"); dt.Columns.Add("itemcode"); Session["Order"] = dt; } else { DataTable dt = (DataTable)Session["Order"]; } } try { if (Request.QueryString["itemid"] != null) { if(Request.QueryString["itemid"] == "1013" || Request.QueryString["itemid"] == "1014" || Request.QueryString["itemid"] == "1017" || Request.QueryString["itemid"] == "1018" || Request.QueryString["itemid"] == "1019" || Request.QueryString["itemid"] == "1020" || Request.QueryString["itemid"] == "1021") { potDiv.Visible = true; } else if (Request.QueryString["itemid"] == "1025") { legpack.Visible = true; } else if (Request.QueryString["itemid"] == "1026") { wingspak.Visible = true; } } } catch { } } catch { } } protected void RadioButtonList1_SelectedIndexChanged(object sender, EventArgs e) { //Save the selected value as a session variable Session["Value"] = RadioButtonList1.SelectedValue.ToString(); } protected void loadArea_Click(object sender, EventArgs e) { string longitude2; string latitude; using (var w = new WebClient()) { var json_data = string.Empty; string r = Txt_postCode.Text; string VALUE = r.Replace(" ",""); string url = "http://dev.virtualearth.net/REST/v1/Locations/UK/"+ VALUE + "?key=AjIx2FPv6ieU1ZH9K8KCzYU5trwHUO__aP7VaHaKEf7TJAQtcP96HZ2qGS2OxJEW"; // string url = "http://dev.virtualearth.net/REST/v1/Locations/UK/MK146JY?key=AjIx2FPv6ieU1ZH9K8KCzYU5trwHUO__aP7VaHaKEf7TJAQtcP96HZ2qGS2OxJEW"; // attempt to download JSON data as a string try { json_data = w.DownloadString(url); List<string> data = json_data.Split('[').ToList<string>(); string val = data[4]; List<string> latlng = val.Split(',').ToList<string>(); latitude = latlng[0]; string longitude = latlng[1]; List<string> longitude1 = longitude.Split(']').ToList<string>(); longitude2 = longitude1[0]; string val1 = data[4]; } catch (Exception ex) { string msg; msg = ex.Message; throw new Exception(msg); } // if string with JSON data is not empty, deserialize it to class and return its instance } RadioButtonList1.Visible = true; string text = Txt_postCode.Text; string code = text; string m_ConnectionString = "Data Source=43.255.152.26;Initial Catalog=Yumchop;User ID=Yumchop;Password='Yumchop@123';trusted_connection=false"; conn = new SqlConnection(m_ConnectionString); cmd = new SqlCommand("SELECT * FROM YumChop_Distance WHERE Postal_Code=@postCode", conn); cmd.Parameters.AddWithValue("@postCode", code); string lat = null; string lng = null; try { conn.Open(); reader = cmd.ExecuteReader(); if (!reader.HasRows) { Txt_postCode.Text = "No data"; } while (reader.Read()) { lat = reader["lat"].ToString(); lng = reader["lng"].ToString(); } conn.Close(); conn.Open(); ListItem newItem = new ListItem(); newItem.Text = "Select your area "; newItem.Value = "0"; cmd = new SqlCommand("SELECT Top 3 ID,Area_Name,Full_Address, ( 3959 * acos( cos( radians(@latitude) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(@longitude) ) + sin( radians(@latitude) ) * sin( radians( lat ) ) ) ) AS distance FROM YumChop_Distance Order By ( 3959 * acos( cos( radians(@latitude) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(@longitude) ) + sin( radians(@latitude) ) * sin( radians( lat ) ) ) )", conn); cmd.Parameters.AddWithValue("@latitude", latitude); cmd.Parameters.AddWithValue("@longitude", longitude2); reader = cmd.ExecuteReader(); int i = 0; while (reader.Read()) { i++; if(i==1) { string s = reader["distance"].ToString(); string sr = s.Substring(0, s.LastIndexOf(".")+2); this.RadioButtonList1.Items[0].Text = reader["Area_Name"].ToString() + " - "+sr +" KM away"; this.RadioButtonList1.Items[0].Value = reader["Full_Address"].ToString() + " - " + sr + " KM away"; } else if (i==2) { string s = reader["distance"].ToString(); string sr = s.Substring(0, s.LastIndexOf(".") + 2); this.RadioButtonList1.Items[1].Text = reader["Area_Name"].ToString() + " - " + sr + " KM away"; this.RadioButtonList1.Items[1].Value = reader["Full_Address"].ToString() + " - " + sr + " KM away"; } else if(i==3) { string s = reader["distance"].ToString(); string sr = s.Substring(0, s.LastIndexOf(".") + 2); this.RadioButtonList1.Items[2].Text = reader["Area_Name"].ToString() + " - " + sr+ " KM away"; this.RadioButtonList1.Items[2].Value = reader["Full_Address"].ToString() + " - " + sr + " KM away"; } ListItem newItem1 = new ListItem(); newItem1.Text = reader["Area_Name"].ToString(); newItem1.Value = reader["ID"].ToString(); } reader.Close(); reader.Dispose(); conn.Close(); conn.Dispose(); cmd.Dispose(); } catch { } }

你的前台代码(detail.aspx)

<div>
<asp:ScriptManager ID="ScriptManager1" runat="server" />
</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<div >
<h3>Enter Postal Code </h3>
<asp:TextBox ID="Txt_postCode" runat="server" ToolTip="Enter Postal code to get nearby Veding Machine"></asp:TextBox>
<asp:Button ID="Btn_postCode" runat="server" OnClick="loadArea_Click" Text="Check"></asp:Button>
<h3>Near By Machines</h3>
<br />
<asp:RadioButtonList ID="RadioButtonList1" runat="server" onselectedindexchanged="RadioButtonList1_SelectedIndexChanged" Visible="False">
<asp:ListItem ></asp:ListItem>
<asp:ListItem ></asp:ListItem>
<asp:ListItem ></asp:ListItem>
</asp:RadioButtonList>
</div>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdateProgress ID="UpdateProgress1" runat="server" DynamicLayout="true" AssociatedUpdatePanelID="UpdatePanel1" >
<ProgressTemplate>
Loading...
</ProgressTemplate>
</asp:UpdateProgress>

内容的提问来源于stack exchange,提问作者Laiba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:49:47