У меня есть логи c и я хочу загрузить свой отчет. Я использую CrystalDecision, чтобы сделать это в asp. net mvc. Ниже приведены некоторые разработанные классы, в которых нет ошибок и не отображается загрузка. Я отладил его не получить к моему объекту контроллера, как Server.MapPath. Я думаю, что до сих пор, возможно, факт, что я обращаюсь к этому через сервер с этим именем объекта, то есть мой sql сервер указывает на локальное соединение с БД. Пожалуйста, помогите товарищам.
// Controller
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AdvertReport(FormCollection fc)
{
DataSet ds = obIlReports.Generate_AdvertDetailsReport();
ds.Tables[0].TableName = "DtTest";
if(ds.Tables[0].Rows.Count > 0)
{
ReportClass rptH = new ReportClass();
rptH.FileName = Server.MapPath("-/Reports/AdvertReport.rpt");// Not hit here when i debug
rptH.Load();
rptH.SetDataSource(ds.Tables[0]);
Response.Buffer = false;
Response.ClearContent();
Response.ClearHeaders();
Stream stream = rptH.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
stream.Seek(0, SeekOrigin.Begin);
return File(stream, "application/pdf", "AdvertReport.pdf");
}
return View();
}
}
//Reports
public class ReportsMaster : IlReports
{
public DataSet Generate_AdvertDetailsReport()
{
using(SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["eNtsaOnlineRegistrationDB"].ToString()))
{
con.Open();
DataSet ds = new DataSet();
// Handling Exception
try
{
SqlCommand cmd = new SqlCommand("GetAdvertReport", con);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter();
da.SelectCommand = cmd;
da.Fill(ds);
if(ds.Tables.Count > 0)
{
return ds;
}
else
{
return ds = null;
}
}
catch(Exception )
{
throw;
}
finally
{
ds.Dispose();
}
}
}
//View.cshtml
<div class="container">
<div style="margin-top:10px"></div>
<fieldset>
<legend class="legend">eNtsa-Events Advert Download</legend>
<div class="panel">
<div class="panel-body">
@using(Html.BeginForm("AdvertReport", "AdvertReport", FormMethod.Post))
{
@Html.AntiForgeryToken()
<div style="margin-top:5px"></div>
<div class="row">
<div class="col-md-6">
eNtsa-Events Advertisement :-
</div>
<div class="col-md-6">
<input id="submitval" class="btn btn-success" type="submit" name="actionType" value="Download" />
</div>
</div>
<div style="margin-top: 5px"></div>
}
</div>
</div>
</fieldset>
</div>
// ConnectionString
<connectionStrings>
<add name="eNtsaOnlineRegistrationDB" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\eNtsaOnlineRegistrationDB.mdf;Initial Catalog=eNtsaOnlineRegistrationDB; Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>