【问题标题】:Code inside <script runat=“server”> works well in Debug but not when deployed on local IIS<script runat=“server”> 内的代码在 Debug 中运行良好,但在部署到本地 IIS 时却不行
【发布时间】:2013-06-25 14:38:02
【问题描述】:

我被要求更新一个旧的 VB.NET Web 应用程序,这不是我最喜欢的技术,我更像是一个桌面用户。不管怎样,我正在努力解决它!

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

App_Code 文件夹包含一个 Database.vb 文件,其中包含一个 Database 类,方法如下:

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>

在本地调试中一切正常,但只要我在本地 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)

注意事项:

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

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

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

任何帮助我解决这个问题的想法/线索将不胜感激:)

提前致谢!

【问题讨论】:

  • 旁注:如果我是you,我会失去sp_前缀:“在命名程序时避免使用sp_前缀。这个前缀是SQL Server 用来指定系统过程。如果存在同名的系统过程,使用前缀会导致应用程序代码中断。"
  • 没错,这就是我通常实际做的事情,但我宁愿让这个应用程序在重命名数百个存储过程之前使用当前代码运行;)

标签: asp.net vb.net iis-7


【解决方案1】:

根据更正进行编辑:

您需要导入数据库的命名空间,默认为应用程序命名空间。

<%@ Import namespace = "myappname" %>

【讨论】:

  • App_Code 是一个目录而不是命名空间,我导入了“myappname”命名空间,它确实有效,感谢@Tombala 的提示!它现在可以在我的本地 IIS 上运行。但我仍然不明白为什么它可以在生产 IIS 上运行没有这个导入
  • 好点。我不确定确切的命名空间。我进行了编辑,以便将来的访问者可以找到更正确的答案。不知道为什么它会在您的部署位置有所不同。我很想知道你是否弄清楚了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-27
  • 2021-11-28
  • 2019-11-17
  • 2013-09-22
  • 2017-06-16
  • 1970-01-01
相关资源
最近更新 更多