В настоящее время я развертываю свое веб-приложение на веб-сервере с сертификатом HTTPS.
Приложение корректно работает на сервере, а также вне его локальной сети.
За исключением 1 функции, которая возвращает. Это происходит только когда вы находитесь вне локальной сети. Если вы делаете этот запрос на сервере напрямую, он работает отлично.
Fordbidden 403 - у вас нет прав доступа к / SomeFolder / TimeRegistration / GeneratePDF на этом сервере.
Теперь функция GeneratePDF требует некоторого доступа к некоторым папкам, поэтому, возможно, именно поэтому и возникает эта ошибка, но я обязательно добавил разрешения для IIS_IUSRS.
Вот функция GeneratePDF;
public ActionResult GeneratePDF(DateTime? FirstDate = null, DateTime? LastDate = null)
{
var VendId = Session["VendId"] as string;
string ShopDoc = "";
DateTime updatedFirstDate = FirstDate.GetValueOrDefault(DateTime.Now);
DateTime updatedLastDate = LastDate.GetValueOrDefault(DateTime.Now);
int weekNum = updatedFirstDate.DayOfYear / 7 + 1;
var originalCshtml = System.IO.File.ReadAllText(@"C:\somefolder\somefolder\somefolder\Views\PDF\Index.cshtml");
var myModel = new MyViewModel();
myModel.TimeRegisters = Utility.Utilities.GetTimeRegisters( updatedFirstDate, updatedLastDate, VendId);
myModel.WeekNumber = weekNum;
myModel.ShopDocCode = ShopDoc;
myModel.GetOrdNr = Utility.Utilities.GetOrdNr(ShopDoc);
myModel.FromDate = updatedFirstDate;
myModel.TillDate = updatedLastDate;
//Update de Timereg -> procesInd = 1.
var verify = Utility.Utilities.VerifyTimereg(updatedFirstDate, updatedLastDate, VendId);
var compiledHtml = Engine.Razor.RunCompile(originalCshtml, Guid.NewGuid().ToString(), null, myModel);
System.IO.File.WriteAllText("C:\\temp\\mypdf.html", compiledHtml);
try
{
var p = Process.Start("C:\\temp\\wkhtmltopdf.exe", "C:\\temp\\mypdf.html C:\\temp\\mypdf.pdf");
p.WaitForExit(10000);
}
catch(Exception ex)
{
string path = "C://temp//log.txt";
if (!System.IO.File.Exists(path))
{
// Create a file to write to.
string createText = "Created Logfile." + Environment.NewLine;
System.IO.File.WriteAllText(path, createText);
}
using (StreamWriter outputFile = new StreamWriter(path, true))
{
string createText = DateTime.Now + " exception: " + ex + " + " + Environment.NewLine;
outputFile.WriteLine(createText);
}
}
// return File("file.pdf", "application/pdf");
return File("C:\\temp\\mypdf.pdf", "application/pdf", "weeknummer: " + weekNum + ".pdf");
}
Редактировать:
Я удалил содержимое контроллера и заменил его простым возвратом json
но это дает мне точно такую же ошибку.
Я думаю, это как-то связано с тем, как мы добираемся до контроллера (расположение окон с помощью JS)
window.location.href = appPath + "/TimeRegistration/GeneratePDF?FirstDate=" + firstday + "&LastDate=" + lastday;