Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 尝试读取.aspx文件时出现StreamReader文件路径错误_C#_Asp.net_Webforms - Fatal编程技术网

C# 尝试读取.aspx文件时出现StreamReader文件路径错误

C# 尝试读取.aspx文件时出现StreamReader文件路径错误,c#,asp.net,webforms,C#,Asp.net,Webforms,我需要根据template Newslette template.aspx文件发送电子邮件时事通讯 我需要将ArticleID和Language传递给newslettemplate.aspx文件,该文件位于文件夹“\u admin”下 由于某种原因,它给了我以下的错误 System.ArgumentException:路径中的非法字符。如果我从URL中删除查询字符串部分,则不会生成任何错误,但我无法提取文章 下面是代码示例。我将感谢您在这方面的帮助 String to, subject, mes

我需要根据template Newslette template.aspx文件发送电子邮件时事通讯

我需要将ArticleID和Language传递给newslettemplate.aspx文件,该文件位于文件夹“\u admin”下

由于某种原因,它给了我以下的错误
System.ArgumentException:路径中的非法字符。
如果我从
URL
中删除查询字符串部分,则不会生成任何错误,但我无法提取文章

下面是代码示例。我将感谢您在这方面的帮助

String to, subject, message;
bool isHtml;
isHtml = true;
to = txtEmail.Text;
subject = txtEmailSubject.Text;

ListDictionary replacements = new ListDictionary();
string MessageBody = String.Empty;
string filePath = System.Web.HttpContext.Current.Request.PhysicalApplicationPath;

//String TemplatePath = "\_admin\NewsletterTemplate.aspx?ArticleID=" + ddArticleList.SelectedItem.Value.ToString() + "&Language=1";

using (StreamReader sr = new StreamReader(filePath + @"\_admin\NewsletterTemplate.aspx?ArticleID=" + ddArticleList.SelectedItem.Value.ToString() + "&Language=1"))
{
    MessageBody = sr.ReadToEnd();
}
MailDefinition mailDef = new MailDefinition();
MailMessage msgHtml = mailDef.CreateMailMessage(to, replacements, MessageBody, new System.Web.UI.Control());
message = msgHtml.Body.ToString();
//send Email
Helper.SendEmailNewsletter(to, subject, message, isHtml);

StreamReader构造函数希望传递的是文件名,而不是URL地址。文件名中不能有查询字符串参数

如果要传递查询字符串参数,可以使用以下类向webform发送HTTP请求:


通过向web表单发送HTTP请求并将结果作为字符串读回。请记住,webform在服务器上运行并生成HTML。您需要传递此web表单的绝对url地址。谢谢。。它使用(WebClient client=newwebclient())进行微小更改
。我会记下你的答案。否则它会给我一些错误,你使用的是哪个版本的.NET?我想有些很老了。我甚至不记得什么时候引入了
var
关键字。我想那是在C#3.0版本。该死,我的答案有一个打字错误。我用小写的
w
:-)写了
webClient
),很抱歉。现在应该没事了。
using (var client = new WebClient())
{
    MessageBody = client.DownloadString("http://example.com/NewsletterTemplate.aspx?ArticleID=" + HttpUtility.UrlEncode(ddArticleList.SelectedItem.Value.ToString()) + "&Language=1");
}