Asp.net 内部代码<;脚本运行时间=“;服务器&x201D&燃气轮机;在调试中工作良好,但在本地IIS上部署时不起作用

Asp.net 内部代码<;脚本运行时间=“;服务器&x201D&燃气轮机;在调试中工作良好,但在本地IIS上部署时不起作用,asp.net,vb.net,iis-7,Asp.net,Vb.net,Iis 7,我被要求更新一个旧的VB.NET web应用程序,而这并不是我最喜欢的技术,我更喜欢桌面应用程序。不管怎么说,我不想处理它 我正面临一个无法解决的问题(如果这个问题很奇怪,请原谅我)。首先,该代码在生产环境中运行良好,因为这是客户机源代码。当我在调试模式下启动站点时,它在VS中也运行良好。一旦我将网站发布到本地IIS,页面就会失败 App_Code文件夹包含一个Database.vb文件,其中包含一个数据库类,使用以下方法: Option Strict On Imports System.Tex

我被要求更新一个旧的VB.NET web应用程序,而这并不是我最喜欢的技术,我更喜欢桌面应用程序。不管怎么说,我不想处理它

我正面临一个无法解决的问题(如果这个问题很奇怪,请原谅我)。首先,该代码在生产环境中运行良好,因为这是客户机源代码。当我在调试模式下启动站点时,它在VS中也运行良好。一旦我将网站发布到本地IIS,页面就会失败

App_Code文件夹包含一个Database.vb文件,其中包含一个数据库类,使用以下方法:

Option Strict On
Imports System.Text
Imports System.Data
Imports System.Data.SqlClient
Imports System.Web.Caching
Imports System.Collections

Public Class Database

    Public Shared Sub ExecuteDataTable(ByVal strSQL As String, ByRef dt As DataTable)
        ...
    End SUb
我有一个包含以下代码的ASPX页面

<script runat="server">
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        LoadGrid()
    End Sub

    Private Sub LoadGrid()
        Dim strSQL As String = "sp_XXXXXXXXXXXXXXXXXXX"
        Dim dt As New System.Data.DataTable
        Database.ExecuteDataTable(strSQL, dt)
        grd_Data.DataSource = dt
        grd_Data.DataBind()
    End Sub
</script>

受保护的子页加载(ByVal sender作为对象,ByVal e作为System.EventArgs)处理Me.Load
LoadGrid()
端接头
专用子负荷网格()
Dim strSQL为String=“sp_xxxxxxxxxxxxxxxx”
Dim dt作为新System.Data.DataTable
数据库.ExecuteDataTable(strSQL,dt)
grd_Data.DataSource=dt
grd_Data.DataBind()
端接头
在本地调试中一切正常,但一旦我在本地IIS7上发布网站,就会出现以下错误:

Server Error in '/' Application.
Compilation Error
Compiler Error Message: BC30456: 'Database' is not a member of '<Default>'.
Line 18:         Global.Database.ExecuteDataTable(strSQL, dt)
“/”应用程序中出现服务器错误。 编译错误 编译器错误消息:BC30456:“数据库”不是“”的成员。 第18行:Global.Database.ExecuteDataTable(strSQL,dt) 注:

  • 数据库类在项目中的任何地方都可以使用,并且工作良好。我在这里注意到的唯一区别是,代码在aspx文件中使用脚本runat=“server”而不是通常的.vb文件。不确定它是否会导致问题,因为它在本地运行良好

  • 我试图在第18行使用Global.Database,但遇到了同样的问题

  • 该解决方案的目标框架是v4.0。IIS7中的应用程序池也设置为v4.0

如果有任何想法/线索可以帮助我解决此问题,我们将不胜感激:)


提前谢谢

根据更正进行编辑:

您需要导入数据库的名称空间,默认情况下是应用程序名称空间

<%@ Import namespace = "myappname" %>


旁注:如果我是:“在命名过程时避免使用sp_uu前缀。SQL Server使用此前缀来指定系统过程。如果存在同名的系统过程,则使用前缀可能导致应用程序代码中断。”这是事实,我通常会这样做,但我更希望在重命名数百个存储的程序之前,让这个应用程序以当前代码运行;)App_代码是一个dorectory,而不是一个名称空间,我导入了“myappname”名称空间,它实际上起了作用,感谢@Tombala的提示!它现在在我的本地IIS上工作。但是我仍然不明白为什么它在没有这个重要的优点的情况下在生产IIS上工作。我不确定确切的名称空间。我进行了编辑,以便将来的访问者能够找到更正确的答案。不知道为什么部署位置会有所不同。我很想知道你是否能弄明白。