代码之家  ›  专栏  ›  技术社区  ›  Andreas Grech

从ASP.NET自定义服务器读取嵌入的文件控制呈现该文件

  •  1
  • Andreas Grech  · 技术社区  · 15 年前

    我目前在我的自定义服务器控制项目中有一个文件“abc.htm”,它是 Build Action 设置为 Embedded Resource .

    现在在 RenderContents(HtmlTextWriter output) 方法,我需要读取该文件并在网站上呈现。

    我正在尝试以下操作,但没有用:

    protected override void RenderContents(HtmlTextWriter output)
    {
        var providersURL = Page.ClientScript.GetWebResourceUrl(typeof (OpenIDSel), "OpenIDSelector.Providers.htm");
        var fi = new FileInfo(providersURL); // <- exception here
    
        //the remaining code is to possibly render the file
    }
    

    这是一个例子 providersURL 是:

    /WebResource.axd?d=kyU2OiYu6lwshLH4pRUCUmG-pzI4xDC1ii9u032IPWwUzMsFzFHzL3veInwslz8Y0&t=634056587753507131
    

    FileInfo 正在投掷 System.ArgumentException :路径中有非法字符。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Matt Dearing    15 年前

    你可以这样做:

    protected override void RenderContents(HtmlTextWriter output)
    {
    
     var source = ReadEmbeddedResource("AssemblyName", "OpenIDSelector.Providers.htm");    
    
     //the remaining code is to possibly render the file
    
    }
    
    
    private string ReadEmbeddedResource(string assemblyName, string resouceName)
    {
        var assembly = Assembly.Load(assemblyName);
        using (var stream = assembly.GetManifestResourceStream(resouceName))
        using(var reader = new StreamReader(stream))
        {
            return reader.ReadToEnd();
        }
    }