Запрещено 403 - только на 1 функцию - PullRequest
2 голосов
/ 24 июня 2019

В настоящее время я развертываю свое веб-приложение на веб-сервере с сертификатом 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;
...