У меня есть вызов ajax для действия контроллера, называемого ExportToExcel.ExportToExcel создает URL-адрес и возвращает его в json клиенту, который вызывает другое действие контроллера при успешном выполнении ajax.
Приведенный ниже код работает локально, но не на dev.Путь локально состоит только из базового пути (например, http://localhost:portNumber/controllerName/actionName), в то время как в dev, после базового пути есть путь, затем добавляется имя и действие контроллера (например, dev / appName / controllerName / actionName)
Howдобавить downloadExcelUrl в dev / appName вместо dev / appName?
Ajax-вызов Action One в контроллере
$("#exportToExcel").click(function () {
$.ajax({
cache: false,
url: '@Url.Action("ExportToExcel", "Test")',
success: function (result) {
window.location.href = result.redirectUrl;
},
error: function (xhr) {
console.log("Error in ajax call to ExportToExcel: " + xhr.status + xhr.responseText);
}
});
});
Action One в контроллере, который создает URL-адрес для Action Two public JsonResult ExportToExcel () {try {// некоторый код
string handle = Guid.NewGuid().ToString();
using (MemoryStream memoryStream = new MemoryStream())
{
wb.SaveAs(memoryStream);
memoryStream.Position = 0;
Session[handle] = memoryStream.ToArray();
}
var urlBuilder = new UrlHelper(Request.RequestContext);
var downloadExcelUrl = urlBuilder.Action("DownloadExcel", "Test", new { fileGuid = handle, fileName = "Excel_Form.xlsx" });
return Json(new { status = "success", redirectUrl = downloadExcelUrl }, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json("Exception thrown in ExportToExcel", JsonRequestBehavior.AllowGet);
}
}
Действие Два в контроллере
[HttpGet]
public virtual ActionResult DownloadExcel(string fileGuid, string fileName)
{
try
{
if (Session[fileGuid] != null)
{
byte[] data = Session[fileGuid] as byte[];
return File(data, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);
}
else
{
return new EmptyResult();
}
}
catch (Exception ex)
{
return new EmptyResult();
}
}
Локально:
http://localhost:51865/Test/ExportToExcel?_=1562712387404
http://localhost:51865/Test/DownloadExcel?fileGuid=00b2bca3-e323-45e4-97a8-4cdcc78eb445&fileName=Excel_Form.xlsx
на Dev:
http://dev/appName/Test/Process/undefined