如何编写ASP.NET图片加水印及防盗链功能的完整实现代码?
- 技术教程
- 2025-12-18
- 4875
在互联网上,版权保护是一个永恒的话题,对于网站来说,防止他人盗用图片是维护自身权益的重要一环,ASP.NET作为一种流行的Web开发框架,可以通过添加水印和防盗链技术来保护图片不被非法使用,以下是如何在ASP.NET中实现图片加水印和防盗链的详细步骤和代码示例。
添加水印
准备水印图片
你需要准备一个水印图片,通常是一个透明背景的PNG图片。
编写C#代码
在ASP.NET中,你可以使用System.Drawing命名空间中的Graphics类来在图片上绘制水印。

实现防盗链
配置Web.config
在ASP.NET项目中,你需要修改Web.config文件,添加以下配置来启用防盗链。

<configuration> <system.web> <httpRuntime targetFramework="4.0" /> <customErrors mode="On" defaultRedirect="error.html"> <error statusCode="403" redirect="403.html" /> </customErrors> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <security> <requestFiltering> <requestLimits maxUrlLength="8192" /> </requestFiltering> </security> </system.webServer> </configuration>
编写C#代码
你需要编写代码来检查请求的来源,并返回相应的响应。
public static void CheckReferer(HttpRequest request, HttpResponse response) { string referer = request.UrlReferrer != null ? request.UrlReferrer.Host : ""; string allowedDomains = "yourdomain.com, anotherdomain.com"; // 允许的域名列表 if (!allowedDomains.Contains(referer)) { response.StatusCode = 403; response.Write("Access denied."); } }
FAQs
Q1:如何在图片上添加文字水印?
A1: 可以使用System.Drawing命名空间中的TextRenderer类来在图片上添加文字水印,首先创建一个Graphics对象,然后使用TextRenderer.DrawText方法在指定位置绘制文字。
Q2:如何修改防盗链配置以允许更多域名访问?
A2: 在Web.config文件中,找到<requestFiltering>标签,然后修改<requestLimits>标签中的maxUrlLength属性和<allowedDomains>属性,以允许更多的域名访问,可以增加新的域名到allowedDomains字符串中。
