如何从程序集中获取资源

 

Asp.net可获取的资源,总共有4种:

1.       程序集中的直接嵌入的文件,如:图像、js文件、html文件等。

2.       站点内部的直接嵌入的文件,如:图像、js文件、html文件等。

3.       程序集中的直接嵌入的资源文件(后缀名为“.resx”)。

4.       站点内部的App_GlobalResources目录下的资源文件(后缀名为“.resx”)。

 

 

Asp.net除了第2种可以直接在页面中引用外,其他3种资源的获得方式有5种。

1.       GetWebResourceUrl方法:可以直接获取程序集中的直接嵌入的文件的url字符串。

2.       ResourceManager方法:可以获取程序集中直接嵌入的资源文件(后缀名为“.resx”)。

3.       直接让studio平台用ResXFileCodeGenerator工具生成强类型资源类,然后引用。

4.       Assembly.GetManifestResourceStream方法:可以直接获取DLL中的直接嵌入的文件。

5.       Resources.[资源文件名].ResourceManager.GetString("jj")可以直接获取站点内部的App_GlobalResources目录下的资源文件。

 

Asp.net可以建立.resx类型的资源文件,也可以在程序集中嵌入图像、js文件、html文件等。这2种都是资源,但提取的方式有所不同。

直接嵌入程序集的资源(在程序集中嵌入图像、js文件、html文件等),通常用System.Web.UI.ClientScriptManagerGetWebResourceUrl方法来提取,ClientScriptManager类通过Page.ClientScript暴露。在控件内部,可以通过this.Page.ClientScript得到ClientScriptManager实例

使用GetWebResourceUrl方法的程序集的属性文件AssemblyInfo.cs必须要将资源文件进行注册。

[assembly: WebResourceAttribute("eee.01.jpg","image/jpg")]

[assembly: WebResourceAttribute("eee.02.jpg", "image/jpg")]

[assembly: WebResourceAttribute("eee.ee.01.jpg", "image/jpg")]

 

Asp.net可以建立.resx类型的资源文件,则需要使用System.Resources.ResourceManager来提取。

 

使用System.Resources.ResourceManager提取所获得的可以是字符串、图像、图标、音频、文件、其他等对象。可以在服务端的执行代码中使用。但不能直接暴露给客户端。

而使用GetWebResourceUrl方法所获得的是一个字符串,该字符串是服务端文件(图像、jshtml等)的url地址。不能用在服务端的执行代码中。

如果要在服务端读取程序集中的文件,必须使用其他方法。

从程序集中获取图形文件

 

如下方法从ppp.ppp1所在的程序集中获取了01.jpg图形文件,该文件存在于fff目录,该程序集的默认空间名为kkk

<%@ WebHandler Language="C#" Class="Handler" %>

 

using System;

using System.IO;

using System.Web;

using System.Drawing;

using System.Drawing.Imaging;

using System.Reflection;

 

public class Handler : IHttpHandler

{   

    public void ProcessRequest (HttpContext context)

    {

 

        Assembly assembly = typeof(ppp.ppp1).Assembly ;

 

        System.IO.Stream stream

            = assembly.GetManifestResourceStream("kkk.fff.01.jpg");

       

        Image imgObj = Image.FromStream(stream);

 

        Bitmap raster;

        raster = new Bitmap(imgObj);

       

        context.Response.ClearContent();

        context.Response.ContentType = "image/jpeg";

        raster.Save

                (

                    context.Response.OutputStream,

                    System.Drawing.Imaging.ImageFormat.Jpeg

                );

       

        context.Response.Flush();

        stream.Close();

        raster.Dispose();

        context.Response.End();

    }

 

    public bool IsReusable {

        get {

            return false;

        }

    }

 

}

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值