c# - 中继器无法识别具有运行时错误“未知类型:System.Object 值:SqlDataSource1”的数据源
问题描述
我正在尝试使用 SQLite 数据库作为中继器的数据源运行 Asp.NET 页面。当我在 Ado.NET 程序中使用 Sqlite 数据源和运行它所需的 dll 文件时,它们工作正常,但在运行时在网页(aspx)中显示以下错误:
System.Web.HttpException
Property enroll not found in System.Char
Description: HTTP 500.Error processing request.
Details: Error processing request.
堆栈跟踪:
at System.Web.UI.DataBinder.GetPropertyValue (System.Object container, System.String propName) [0x00062] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.DataBinder.Eval (System.Object container, System.String expression) [0x0005d] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.TemplateControl.Eval (System.String expression) [0x0000b] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at ASP.about_aspx.__DataBind__bctrl_4 (System.Object sender, System.EventArgs e) [0x00013] in <cda3370d68f04a978aeb173db70786cf>:0
at System.Web.UI.Control.OnDataBinding (System.EventArgs e) [0x00023] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.Control.DataBind (System.Boolean raiseOnDataBinding) [0x00031] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.Control.DataBind () [0x00000] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.Control.DataBindChildren () [0x00030] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.Control.DataBind (System.Boolean raiseOnDataBinding) [0x0003c] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.Control.DataBind () [0x00000] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.WebControls.Repeater.DoItem (System.Int32 i, System.Web.UI.WebControls.ListItemType t, System.Object d, System.Boolean databind) [0x0004a] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.WebControls.Repeater.CreateControlHierarchy (System.Boolean useDataSource) [0x00078] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.WebControls.Repeater.OnDataBinding (System.EventArgs e) [0x00022] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.WebControls.Repeater.DataBind () [0x00000] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at WebApp.About.Page_Load (System.Object sender, System.EventArgs e) [0x00011] in <cf8ee0554811421f8f91feab1903c901>:0
at System.Web.UI.Control.OnLoad (System.EventArgs e) [0x00023] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.Control.LoadRecursive () [0x00028] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.Page.ProcessLoad () [0x0004a] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.Page.ProcessPostData () [0x00047] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.Page.InternalProcessRequest () [0x001a1] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
at System.Web.UI.Page.ProcessRequest (System.Web.HttpContext context) [0x0005f] in <6bd7a846f9aa4f0bae143ad0f36ee3bd>:0
我使用的服务器是 ubuntu 18.04 上的 XSP。我已经从以下网址下载了 SQLite 程序集:https ://sourceforge.net/projects/sqlite-dotnet2/
发生此错误时,控制台会打印以下行:
Unknown type: System.Object value: SqlDataSource1
这是我的 ASPX 文件:
<%@ Page Title="About" Language="C#" AutoEventWireup="true" src="About.aspx.cs" Inherits="WebApp.About"%>
<!DOCTYPE html>
<html lang="en">
<head runat="server">
</head>
<body>
<p>Hello</p>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="Data Source=sample.db;Pooling=True;Max Pool Size=100;"
SelectCommand="SELECT [name],[enroll] FROM student;"></asp:SqlDataSource>
<table>
<asp:Repeater runat="server" ID="Repeater1" DataSource="SqlDataSource1">
<HeaderTemplate>
<tr>
<td>Enroll</td>
<td>Name</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<td><%# Eval("enroll")%></td>
<td><%# Eval("name")%></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
</body>
</html>
这是相关的 C# 文件:
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SQLite;
using System.IO;
namespace WebApp
{
public class About : Page
{
protected void Page_Load(object sender, EventArgs e)
{
Repeater repeater = FindControl("Repeater1") as Repeater ;
// Response.Write(Directory.GetCurrentDirectory());
repeater.DataBind();
}
}
}
我没有使用正确的数据源绑定方式吗?还是没有正确引用数据库文件?数据库文件与 .aspx 和 .cs 文件位于同一目录中,并且程序集位于名为“bin”的文件夹中。我已经使用无效的程序集名称进行了测试,SQLite 的程序集在编译时正在使用。
解决方案
推荐阅读
- localhost - 创建自己的本地 Java 身份提供者 SAML2
- python - Check and remove duplicates in python MongoDB
- javascript - how to stop/recheck data in forEach using Nodejs
- r - 使用 R 为字符串中的字母模式赋值
- vue.js - Vue memory leak: each time v-if value is changed, more memory is needed
- angularjs - 使用 AngularJS 登录 Google
- excel - if cell(C2) l contains '@", remove the domain text + "@", else, output original value(C2) / check one cell against many string groups
- angular - 如何使用 Angular 4 将占位符放在选择下拉列表中?
- python - 根据值拆分熊猫数据框
- php - How can i fetch data from my requests table and put it in users table