App_Code.dll如何防止别人引用

hztgcl1986 2009-12-16 10:35:01
我将一些经常使用的类放在App_Code文件夹中,如:
HZTClass.cs

namespace HZT
{
public class HZTClass
{
public HZTClass()
{
}

public static string HW()
{
return "Hi!";
}
}
}


某一aspx网页相关代码:

using System;
using HZT;

public partial class TTT : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(HZTClass.HW());
}
}


在发布网站后的bin文件夹中会有App_Code.dll文件,别人的程序通过添加引用可以调用我写的HZTClass类。

如果将类或其成员的访问修饰符改为internal,则我自己的aspx页面相关的cs文件中也无法调用HZTClass了。

请问如何解决?
...全文
220 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xx_88 2010-03-19
  • 打赏
  • 举报
回复
web application?
chaofd 2009-12-26
  • 打赏
  • 举报
回复
mark
hztgcl1986 2009-12-21
  • 打赏
  • 举报
回复
自己解决了。

方法:
将网站由web site改成了web application后,将类的访问修饰符改成internal,页面可以访问,其它程序通过引用生成的dll文件也访问不到了。
Chaos_Aun 2009-12-16
  • 打赏
  • 举报
回复
程序集内强命名 加密钥就好了
hztgcl1986 2009-12-16
  • 打赏
  • 举报
回复
自己顶上去
hztgcl1986 2009-12-16
  • 打赏
  • 举报
回复
6楼啥意思
Lovely_baby 2009-12-16
  • 打赏
  • 举报
回复
使用强名称为程序集签名的方法有两种:

使用 .NET Framework SDK 提供的程序集链接器 (Al.exe)。
使用程序集属性将强名称信息插入代码中。您可以使用 AssemblyKeyFileAttribute 或 AssemblyKeyNameAttribute,这取决于要使用的密钥文件所在的位置。
要使用强名称为程序集签名,必须具有加密密钥对。有关创建密钥对的更多信息,请参见创建密钥对。

使用“程序集链接器”创建程序集并为其签署强名称

在命令提示处,键入下列命令:
al /out: <程序集名> <模块名> /keyfile: <文件名>

在此命令中,“程序集名”是要使用强名称签名的程序集的名称,“模块名”是用于创建程序集的代码模块的名称,“文件名”是包含密钥对的容器或文件的名称。

下面的示例使用密钥文件 sgKey.snk 为程序集 MyAssembly.dll 签署强名称。

al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk

使用属性为程序集签署强名称

在代码模块中,添加 AssemblyKeyFileAttribute 或 AssemblyKeyNameAttribute,指定在使用强名称为程序集签名时要用到的密钥对所在的文件或容器的名称。
下面的代码示例与名为 sgKey.snk 的密钥文件一起使用 AssemblyKeyFileAttribute。

[Visual Basic]
<Assembly:AssemblyKeyFileAttribute( "sgKey.snk ")>

[C#]
[assembly:AssemblyKeyFileAttribute(@ "..\..\sgKey.snk ")]

在编译时也可延迟为程序集签名。有关更多信息,请参见延迟为程序集签名。

当使用强名称对程序集进行签名时,程序集链接器 (Al.exe) 查找与当前目录和输出目录相关的密钥文件。当使用命令行编译器时,只需将密钥复制到包含代码模块的当前目录即可。

请参见
创建和使用具有强名称的程序集 | 创建密钥对 | 延迟为程序集签名

发送有关此主题的意见

© 2001-2002 Microsoft Corporation。保留所有权利。
hztgcl1986 2009-12-16
  • 打赏
  • 举报
回复
3娄yasire:

别人的项目中,引用了我的App_Code.dll,可以在“视图”——“对象浏览器”中查看到我的类及其成员,然后就可以调用了
hztgcl1986 2009-12-16
  • 打赏
  • 举报
回复
我做的网站,发布后是放在别人电脑上的。他们可以复制bin文件夹啊
chaofd 2009-12-16
  • 打赏
  • 举报
回复
别人怎么会有你的bin目录中的文件?
yasire 2009-12-16
  • 打赏
  • 举报
回复
首先别人要知道你的类里面有什么才能调用,如果才能知道你的dll里有啥呢?反编译。
那么这样的话,就做个混淆,让其反编译不了。
如何混淆? 我也不知道。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧