【问题标题】:asp.net visual basic "external function"asp.net visual basic“外部函数”
【发布时间】:2011-07-04 15:30:11
【问题描述】:

我正在将一些 Foxweb 的东西转换为 asp.net。我希望从一些简单的东西开始学习这些技术,并在以后解决更难的问题。

我有一个案例,我试图使用在另一个文件中声明的函数。我预计这将是一件常见的事情,因为它可能不会放在单独的文件中,除非它被(调用)单独的文件使用。

在我的 aspx 文件中,我有一行如下所示:

Response.Write ( Globals.html_thingie("My Title") )

在另一个文件中,我编写了一个如下所示的类:

Public Class Globals
    Public Shared Function html_thingie(ByVal title As String)

        Dim str As String
        str = "<head>" &  title & "</head>" & vbCrLf
        Return str

    End Function
End Class

当我构建类(在 Visual Studio 中)时,它没有给出错误或警告,并创建了一个名为 ClassLibrary1.dll 的 dll 文件,我将其复制到与 aspx 文件相同的目录中。我不知道为什么它使用名称“ClassLibrary1”,因为我将解决方案名称更改为“Globals”以匹配类名并将我“认为”的项目名称更改为“clsGlobals”。无论如何,我将 dll 复制到服务器保存 aspx 文件的同一目录中。当我从网页调用 aspx 时,它失败了。出于安全原因,它不会告诉我错误消息,但我怀疑这里缺少一些基本的东西。

想法?

【问题讨论】:

    标签: asp.net vb.net


    【解决方案1】:

    dll 应该放在/bin 目录中,比 aspx 页面所在的位置低一级。

    此外,项目的名称不一定与程序集的名称相对应。如果您右键单击项目并转到属性,则可以更改程序集名称。

    第三,(与手头的问题没有直接关系,但很高兴知道),解决方案名称和类名称彼此无关。实际上,解决方案与构建的实际输出无关;严格来说是为了帮助您在开发过程中逻辑地组织项目(成为程序集)。

    【讨论】:

    • 我没有遥控钥匙,所以我现在不能检查这个,但听起来不错。明天会尝试确认。
    【解决方案2】:

    首先,您需要将 .dll 文件放在您的网站名为 bin/ 的子目录中。接下来,您需要在 web.config 中打开远程错误。把这个放在&lt;system.web&gt;下面:

            <customErrors mode="Off"/>
    

    然后您将能够看到正在生成的特定错误。

    【讨论】:

    • 如果使用IE,他可能还需要在IE的高级配置中关闭“显示友好的错误信息”。我真的很讨厌这种设置。
    【解决方案3】:

    这是我必须做的。

    1. 在 system.web 中添加 customErrors 标记非常有用。 (谢谢,达恩斯布拉克)

    2. 不喜欢“Globals”这个词,所以我把名字改成了clsCommon。

    3. 更改程序集名称很方便。 (再次感谢,马克)

    4. 系统不关心(或显然甚至不使用)dll。我编译只是为了检查错误。

    5. 确实使用 vb 文件。所以我将 clsCommon.vb 复制到我的 aspx 文件所在的目录中。

    6. 在类文件中我必须做很多事情。这是一个简短但最终的版本。

      Option Explicit On
      
      Option Strict On
      
      
      Imports System
      
      Imports System.Web.UI
      
      Imports System.Web.UI.Page
      
      
      Public Class clsCommon
          Inherits Page
      
      Public Shared Function html_thingie(ByVal title As String) As String
      
          Dim str As String
      
          str = "<head>" & title & "</head>" & System.Environment.NewLine
          Return str
      
      End Function
      
      End Class
      
    7. 我必须在 aspx 文件中执行以下操作才能调用此函数。

    一个。在我添加的文件顶部:

    <%@ page inherits="clsCommon" src="clsCommon.vb" %>
    

    b.调用该函数的具体行是:

    <%
    Response.Write ( clsCommon.html_thingie("Register for Course") )
    %>
    
    1. 除了您的回复之外,我还发现以下页面很有帮助:

    http://www.4guysfromrolla.com/webtech/chapters/ASPNETUnleashed/ch06.3.shtml

    【讨论】:

      猜你喜欢
      • 2011-07-07
      • 2014-07-31
      • 1970-01-01
      • 1970-01-01
      • 2014-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多