PDA

View Full Version : سوال: رفع خطای Access to the path 'Stimulsoft' is denied



htmbarnamenevisl
یک شنبه 02 مهر 1402, 10:22 صبح
سلام . وقت بخیر . من قبلا از ابزار گزارشگیری Stimulsoft نسخه 2010 استفاده میکردم و به راحتی هم روی هاست کار میکرد . به تازگی از ابزار گزارش 'گیری Stimulsoft نسخه 2023.1.1.0 برای گزارش گیری در وب سایتم استفاده کرده ام(کنترل StiWebViewer1 در نسخه 2010 یکسری مشکلات نمایش داشت) . ورژن دات نت پروژه ام به نسخه 4.5.2 تغییر دادم . برنامه روی لوکال به درستی کار میکنه . اما زمانی که اقدام به گزارش گیری بر روی هاست(بعد از آپلود فایلهای پروژه روی هاست) میکنم با خطای

. Access to the path 'Stimulsoft' is denied


at System.Web.UI.Page.HandleError(Exception e)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
at System.Web.UI.Page.ProcessRequest()
at System.Web.UI.Page.ProcessRequestWithNoAssert(Http Context context)
at System.Web.UI.Page.ProcessRequest(HttpContext context)
at ASP.r_dashboard_user_printpatient_aspx.ProcessRequ est(HttpContext context)
at System.Web.HttpApplication.CallHandlerExecutionSte p.System.Web.HttpApplication.IExecutionStep.Execut e()
at System.Web.HttpApplication.ExecuteStepImpl(IExecut ionStep step)
at System.Web.HttpApplication.ExecuteStep(IExecutionS tep step, Boolean& completedSynchronously)
System.UnauthorizedAccessException: Access to the path 'Stimulsoft' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj, Boolean checkHost)
at System.IO.Directory.InternalCreateDirectoryHelper( String path, Boolean checkHost)
at System.IO.Directory.CreateDirectory(String path)
at Stimulsoft.Base.Licenses.StiLicensePath.GetStimuls oftLicenseKeyPath()
at Stimulsoft.Base.StiLicense.get_Key()
at Stimulsoft.Base.Licenses.StiLicenseKeyValidator.Ge tLicenseKey()
at Stimulsoft.Report.Web.StiWebViewer.RenderJsonParam eters(Boolean forJsProject)
at Stimulsoft.Report.Web.StiWebViewer.RenderContents( HtmlTextWriter writer)
at System.Web.UI.WebControls.WebControl.Render(HtmlTe xtWriter writer)
at System.Web.UI.Control.RenderControlInternal(HtmlTe xtWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
at System.Web.UI.Control.RenderChildrenInternal(HtmlT extWriter writer, ICollection children)
at System.Web.UI.HtmlControls.HtmlForm.RenderChildren (HtmlTextWriter writer)
at System.Web.UI.HtmlControls.HtmlContainerControl.Re nder(HtmlTextWriter writer)
at System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTex tWriter output)
at System.Web.UI.Control.RenderControlInternal(HtmlTe xtWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.HtmlControls.HtmlForm.RenderControl( HtmlTextWriter writer)
at System.Web.UI.Control.RenderChildrenInternal(HtmlT extWriter writer, ICollection children)
at System.Web.UI.Control.RenderChildren(HtmlTextWrite r writer)
at System.Web.UI.Page.Render(HtmlTextWriter writer)
at System.Web.UI.Control.RenderControlInternal(HtmlTe xtWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter)
at System.Web.UI.Control.RenderControl(HtmlTextWriter writer)
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)






مواجه میشم. فایلهای mrt داخل یک فولدر به نام Report که در روت قرار گرفته هست و حتی تنظیمات دسترسی رو به full control تغییر دادم (در حالی که نباید اینکارو میکردم) . اما همچنان مشکل به قوت خودش باقیه .
این هم نمونه کدی که برای فراخوانی نوشتم



Rousta.CMSBase.Users.UserProfile UserProfile = thisRpt.GetByIDFullDetails(Guid.Parse(Page.RouteDa ta.Values["ID"].ToString()));

StiReport report = new StiReport();
report.Dictionary.Clear();
report.Load(Server.MapPath("~/Report/UserPrint1.mrt"));




if (UserProfile!=null)
{


report.RegBusinessObject("UserProfile", UserProfile);
StiOptions.Engine.AllowSetCurrentDirectory = false;
report.Dictionary.Synchronize();
StiWebViewer1.Report = report;
}






با هاست صحبت کردم و تنظیماتی که در یکی از سوالات دوستان قبلا به عنوان راه حل براش مطرح شده بود انجام دادن .

154955



اما همچنان مشکل به قوت خودش باقیه
ضمنا یک بخش جدا هم برای سرور این نسخه داشت که من روی سیستمم نصب نشد . اما گزارش گیری به درستی روی لوکال داره کار میکنه و trial هم نیست

htmbarnamenevisl
یک شنبه 02 مهر 1402, 12:10 عصر
جواب سوالم پیدا کردم . مطرح میکنم شاید راه گشای افراد دیگه باشه
وقتی stimulsoft نصب میکنید برای اینکه کرکش کنید یک فایل به نام licence.key در کامپیوتر خودتون باید بارگذاری می کنید
شما باید این فایل رو هم به هاست منتقل کنید
باید فایل لایسنس (در اینجا این فایل license.key نام دارد) را در اختیار داشته باشید و این فایل را در روت سایت خود نگهداری کنید. (در این مثال این فایل در پوشه wwwroot و در پوشه Report نگهداری شده است).هر زمان که میخواید یک گزارش رو روی سایتتون نمایش بدید باید لایسنس هم قبلش فراخوانی کنید

var stimulKey = Path.Combine(Server.MapPath("~/Report/"), "license.key");
if (System.IO.File.Exists(stimulKey))
{
Stimulsoft.Base.StiLicense.LoadFromFile(stimulKey) ;
}


خب با استفاده از این فایل می تونید به راحتی از استیمول سافت بدون نگرانی از اینکه مشکل لایسنس داشته باشید استفاده کنید.
کد کامل برای فراخوانی گزارش :


var stimulKey = Path.Combine(Server.MapPath("~/Report/"), "license.key");
if (System.IO.File.Exists(stimulKey))
{
Stimulsoft.Base.StiLicense.LoadFromFile(stimulKey) ;
}
StiReport report = new StiReport();
report.Dictionary.Clear();


report.Load(Server.MapPath("~/Report/RemainDistributionCenterPrint.mrt"));

report.RegBusinessObject("Data",YourData );


StiOptions.Engine.AllowSetCurrentDirectory = false;
report.Dictionary.Synchronize();
StiWebViewer1.Report = report;