2010-03-31 91 views
1

我目前在我的自定义服务器控制项目中有一个文件“abc.htm”,它的Build Action设置为Embedded Resource从ASP.NET自定义服务器读取嵌入文件控制渲染它

现在在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

+0

URL编码的providersURL? – 2010-03-31 17:08:13

回答

1

你可以这样做:

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(); 
    } 
} 
相关问题