无法在ASP.NET中访问类

时间:2014-01-31 20:33:48

标签: asp.net vb.net class

我创建了一个ASPX Web应用程序,我已编译并在我的本地PC上运行Visual Studio时工作正常。

但是,在服务器上我收到错误消息

* 编译器错误消息:BC30451:未声明'epoDB'。由于其保护级别,它可能无法访问。 *

epoDB是我所拥有的类的名称,它包含多个方法。我没有使用“Code-Behind”文件,这只是一个单独的文件epoDB.vb。当我发布这个网站时,它在BIN文件夹中创建一个60 KB的DLL。我检查了webConfig并正确设置以允许所有程序集。

以下是一些代码:(ASPX PAGE)

<% @ Import Namespace="epoApprover" 
If Not Action = "X" Then Decrypted = epoDB.AES_Decrypt(RawString)
%>

第一次点击这个方法AES_Decrypt时,我被告知不会声明epoDB。

这是epoDB.vb

Public Class epoDB    
    Public Shared Function AES_Decrypt(ByVal input As String) As String
       'decryption method
        Return decrypted
    End Function
End Class

此EpoDB.vb是一个单独的文件。我有几个类,它编译成一个60KB的epoApprover.dll,但我似乎无法访问任何这些类。
使用.NET 4.0 / IIS6 / Windows 2003 64位。

我尝试了很多东西,例如将这些类放在App_Code中,将它们留在root上,但似乎没有任何工作 - 我想我错过了一个基础。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

原来,IIS只是设置为一个Web文件夹。一旦我将其转换为Web应用程序,它就能够找到所有内容。我知道这是基本的东西!

答案 1 :(得分:0)

您正在使用Page声明混合您的代码。

<% @ Import Namespace="epoApprover" 
If Not Action = "X" Then Decrypted = epoDB.AES_Decrypt(RawString)
%>

所以:

<%@ Import Namespace="epoApprover"%>

<%     
    If foo Then
       ....
    End If    
%>

虽然inline样式(不是CodeFile也不是CodeBehind)代码在:

<script runat="server">

   `Sub procs, Functions, etc.

</script>

您的.vb文件应位于App_Code。不确定上面的代码如何在您的本地PC上运行。

... H个