【发布时间】:2014-03-05 12:58:22
【问题描述】:
我正在尝试将软件转移到新服务器,但无法通过此错误:
触发此错误的代码如下,但我认为这不是问题所在。我很确定这与服务器上设置不正确的东西有关,因为唯一改变的是服务器信息?关于如何纠正此错误的任何想法?
namespace ReportGenerator
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
DataClasses1DataContext classes1DataContext = new DataClasses1DataContext();
foreach (reportsSent entity in classes1DataContext.reportsSents)
{
new Form1.MyReportRenderer().RenderTest(entity.CaseNumberKey);
classes1DataContext.reportsSents.DeleteOnSubmit(entity);
}
classes1DataContext.SubmitChanges();
}
catch (Exception ex)
{
int num = (int)MessageBox.Show(((object)ex.StackTrace).ToString());
}
}
public class MyReportRenderer
{
private rs2005.ReportingService2005 rs;
private rs2005Execution.ReportExecutionService rsExec;
public void RenderTest(String matchedCaseNumber)
{
string HistoryID = (string)null;
string DeviceInfo = (string)null;
string MimeType = string.Empty;
string Encoding = string.Empty;
string Extension = string.Empty;
ReportGenerator.rs2005Execution.Warning[] Warnings = (ReportGenerator.rs2005Execution.Warning[])null;
string[] StreamIds = (string[])null;
this.rs = new ReportingService2005();
this.rsExec = new ReportExecutionService();
this.rs.Credentials = CredentialCache.DefaultCredentials;
this.rsExec.Credentials = CredentialCache.DefaultCredentials;
this.rs.Url = "http://www.aalacquest.com/ReportServer/ReportService2005.asmx";
this.rsExec.Url = "http://www.aalacquest.com/ReportServer/ReportExecution2005.asmx";
try
{
// Load the selected report.
this.rsExec.LoadReport("/LawDept/LawDeptTIC", HistoryID);
// Set the parameters for the report needed.
rs2005Execution.ParameterValue[] parameters = new rs2005Execution.ParameterValue[1];
parameters[0] = new rs2005Execution.ParameterValue();
parameters[0].Name = "CaseNumberKey";
parameters[0].Value = matchedCaseNumber;
rsExec.SetExecutionParameters(parameters, "en-us");
// get pdf of report
byte[] buffer = this.rsExec.Render("PDF", DeviceInfo, out Extension, out MimeType, out Encoding, out Warnings, out StreamIds);
DataClasses1DataContext classes1DataContext = new DataClasses1DataContext();
Queryable.SingleOrDefault<string>(Queryable.Select<vw_ProductClientInfo, string>(Queryable.Where<vw_ProductClientInfo>((IQueryable<vw_ProductClientInfo>)classes1DataContext.GetTable<vw_ProductClientInfo>(), (Expression<Func<vw_ProductClientInfo, bool>>)(c => c.CaseNumberKey == matchedCaseNumber)), (Expression<Func<vw_ProductClientInfo, string>>)(c => c.Description)));
string str1 = Queryable.SingleOrDefault<string>(Queryable.Select<vw_ProductClientInfo, string>(Queryable.Where<vw_ProductClientInfo>((IQueryable<vw_ProductClientInfo>)classes1DataContext.GetTable<vw_ProductClientInfo>(), (Expression<Func<vw_ProductClientInfo, bool>>)(c => c.CaseNumberKey == matchedCaseNumber)), (Expression<Func<vw_ProductClientInfo, string>>)(c => c.Summary)));
string str2 = Queryable.SingleOrDefault<string>(Queryable.Select<vw_ProductClientInfo, string>(Queryable.Where<vw_ProductClientInfo>((IQueryable<vw_ProductClientInfo>)classes1DataContext.GetTable<vw_ProductClientInfo>(), (Expression<Func<vw_ProductClientInfo, bool>>)(c => c.CaseNumberKey == matchedCaseNumber)), (Expression<Func<vw_ProductClientInfo, string>>)(c => string.Format("{0:C}", (object)c.Total))));
string str3 = Queryable.SingleOrDefault<string>(Queryable.Select<vw_ProductClientInfo, string>(Queryable.Where<vw_ProductClientInfo>((IQueryable<vw_ProductClientInfo>)classes1DataContext.GetTable<vw_ProductClientInfo>(), (Expression<Func<vw_ProductClientInfo, bool>>)(c => c.CaseNumberKey == matchedCaseNumber)), (Expression<Func<vw_ProductClientInfo, string>>)(c => c.BRTNumber)));
MailMessage message = new MailMessage("Reports@aalacquest.com", Queryable.SingleOrDefault<string>(Queryable.Select<vw_ProductClientInfo, string>(Queryable.Where<vw_ProductClientInfo>((IQueryable<vw_ProductClientInfo>)classes1DataContext.GetTable<vw_ProductClientInfo>(), (Expression<Func<vw_ProductClientInfo, bool>>)(c => c.CaseNumberKey == matchedCaseNumber)), (Expression<Func<vw_ProductClientInfo, string>>)(c => c.Email))), "Report for Property " + Queryable.SingleOrDefault<string>(Queryable.Select<vw_ProductClientInfo, string>(Queryable.Where<vw_ProductClientInfo>((IQueryable<vw_ProductClientInfo>)classes1DataContext.GetTable<vw_ProductClientInfo>(), (Expression<Func<vw_ProductClientInfo, bool>>)(c => c.CaseNumberKey == matchedCaseNumber)), (Expression<Func<vw_ProductClientInfo, string>>)(c => c.Premises))), "Tax Information Certificate.");
MailAddress mailAddress = new MailAddress("reports@aalacquest.com");
((Collection<MailAddress>)message.CC).Add(mailAddress);
SmtpClient smtpClient = new SmtpClient("localhost");
message.Attachments.Add(new Attachment((Stream)new MemoryStream(buffer), string.Format("{0}" + str3 + ".pdf", (object)"BRT")));
smtpClient.Send(message);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
}
}
【问题讨论】:
-
检查服务器上 IIS 中虚拟文件夹的权限和身份验证设置。这很可能是错误的根源。如果可能,请与您之前使用的服务器进行比较。
-
今天早上我更改了代码以传递凭据。它现在将发送 1 份报告,并在表中的其余案例上失败。越来越近!失败的是其他情况下的登录。所以第一个它可以工作,然后它在接下来的 10 个或任何需要发送的东西中都失败了。
标签: c# reporting-services sql-server-2012 windows-server-2012 reportserver