I made a report using crystal report and in the page load I am writing this
protected void Page_Load(object sender, EventArgs e)
{
ReportDocument crystalReport = new ReportDocument();
crystalReport.Load(Server.MapPath("CrystalReport.rpt"));
crystalReport.SetDatabaseLogon
("amit", "password", #"AMIT\SQLEXPRESS", "TestDB");
CrystalReportViewer1.ReportSource = crystalReport;
}
and when runing the page I found this error.
CS0433: The type 'CrystalDecisions.Web.CrystalReportViewer' exists in both 'c:\Windows\assembly\GAC_MSIL\CrystalDecisions.Web\10.5.3700.0__692fbea5521e1304\CrystalDecisions.Web.dll' and 'c:\Windows\assembly\GAC_MSIL\CrystalDecisions.Web\13.0.2000.0__692fbea5521e1304\CrystalDecisions.Web.dll'
I found this tag in my web.config
<add assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"/>
and in my aspx page
<%# Register Assembly="CrystalDecisions.Web, Version=13.0.2000.0, Culture=neutral, PublicKeyToken=692FBEA5521E1304"
Namespace="CrystalDecisions.Web" TagPrefix="CR" %>
different version for the same assembly makes the conflict so I removed web.config tag and it runs very smooth.
thanks.
Copy-paste this (Version=13.0.2000.0) from web config to the default ASPX source code where you found different versions of Crystal Report and the error will be fixed.
Related
I have used this component to generate a pdf document based out of a dynamic view content. On testing at DEV and Staging environment, it worked fine and on Production environment, it throws below shown error.
Could not load file or assembly 'System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
Rotativa Version: 1.0.0.0
System.Web.Mvc Version: 5.2.3.0
I have given the binding redirect in web.config as below.
bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"
Code:
var pdfLetter = new Rotativa.ViewAsPdf(viewName, viewModel);
pdfLetter.FileName = fileName;
pdfLetter.PageSize = Rotativa.Options.Size.A4;
pdfLetter.PageOrientation = Rotativa.Options.Orientation.Portrait;
pdfLetter.PageMargins = new Rotativa.Options.Margins { Left = 4, Right = 1 };
var letterBytes = pdfLetter.BuildPdf(ControllerContext);
return letterBytes;
Web Application is not referencing the 3.0.0.1 version anywhere and still it throws the error. Tried to check the available Stack Overflow threads to fix.
Does anyone encountered this same problem and have any workaround to fix?
There was config value mismatch for MVC redirect between two environments and system was not able to recognize it. Fixed the issue by creating the web.config redirect section from the scratch.
I'm running a mixed MVC Application inside a sub folder of a web forms application.
Everything worked great in VS 2010 debug (Cassini) but when I deployed to IIS7.5
I got the following error:
'HttpContext.SetSessionStateBehavior' can only be invoked before
'HttpApplication.AcquireRequestState' event is raised.
It errors on the last line (httpHandler.ProcessRequest(HttpContext.Current);) in the default.aspx file of the MVC application sub folder.
public void Page_Load(object sender, System.EventArgs e)
{
string pathToRewriteTo = Request.Path.ToLowerInvariant().Replace("default.aspx", "Home/Index");
HttpContext.Current.RewritePath(pathToRewriteTo, false);
IHttpHandler httpHandler = new MvcHttpHandler();
httpHandler.ProcessRequest(HttpContext.Current);
}
However if I manually navigate to Home/Index from the MVC root folder I can see my application fine from there.
I've looked up the error being thrown and I only find answers dealing with server transfers and not MVC routes.
I have also already checked my IIS7.5 configuration for the route handling module, Application pool running in integrated mode, etc.
Any help would be appreciated.
We faced a similar issue. There are changes to MVCHttpHandler in MVC2 and above.
You need to change it to use httpContext.Server.TransferRequest.
Try the below snippet:
var httpContext = HttpContext.Current;
httpContext.Server.TransferRequest(Url, true); // change to false to pass query string parameters if you have already processed them
Whenever an error is thrown in my Razor view (.cshtml), I get a yellow screen that states
The source code that generated this
unhandled exception can only be shown
when compiled in debug mode. To enable
this, please follow one of the below
steps, then request the URL:
It then says to either set the <# Page Debug="true"> in the view or set the <compilation debug="true"> in the web.config.
I checked my web.config and the <compilation debug="true"> is already set. To exhaust other options, I tried adding it to all the web.config files in the view folders, but no change.
I also checked that the projects are being compiled as Debug and not Release. Any thoughts as to why the source code where the error is being thrown is not being displayed?
Edit: My application was updated from ASP.NET MVC 2 to MVC 3.
Apparently source errors are not displayed when the trust level is set to medium.
I forgot to remove <trust level="medium" /> from the web.config file after I was done testing in medium trust.
1)
source errors does not appear if you do not insert
customErrors mode="Off"
and
compilation debug="true"
in your web.config
2)
when you're in medium trust you can use mvc3 provided you :
cast your return view(xxx) to return view((Object)xxx)
or, in vb: return view(xxx) to return DirectCast(view(xxx), Object)
and
Return View(model) to Return View((Object)model)
or to Return View(DirectCast(model, Object))
and
you do not use #ViewBag
I am trying to render the context of an usercontrol to a PDF document. The usercontrol contains some charts (default asp.net charts):
// Getting the content from the usercontrol
myUsercontrol.Visible = true;
StringBuilder content = new StringBuilder();
StringWriter tw = new StringWriter(content);
HtmlTextWriter hw = new HtmlTextWriter(tw);
myUsercontrol.RenderControl(hw);
myUsercontrol.Visible = false;
// Generating the PDF
But sometimes I am getting an error with myUsercontrol.RenderControl(hw):
"error executing child request for chartimg.axd.".
I am not getting this error all the time. Sometimes it generates the PDF but then there is missing a chart (Missing image).
Anyone know what the problem could be and how to solve it?
Thanks very much in advance!
I found the problem, i have forgotten to add POST to the httphandler for the Chart in System.web in web.config. I had added it to the httphandler in Webserver but not in web and it was web I used for development :-)
<add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
I need to make an AJAX request to some script from the onSave event of a form in MS CRM Dynamics 4.0.
The code I have now is
var http_request;
// Prepare the xmlHttpObject and send the request.
try{
http_request = new ActiveXObject("Msxm12.XMLHTTP");
}catch(e){
try{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
alert("Something went wrong..");
}
}
var poststr = "foo=bar";
http_request.open("POST", "/folder/index.html", false);
http_request.setRequestHeader("Content-Type","text/xml; charset=utf-8");
http_request.send(escape(poststr));
// Capture the result.
var resultXml = http_request.responseText;
alert(resultXml);
The alert now gives me the content of a 404-type error. I'm sure the page is there, it's available through the browser.
If I change the
http_request.open("POST", "/folder/index.html", false);
to
http_request.open("POST", "localhost:5555/folder/index.html", false);
the open() fails, saying "Permission denied".
UPDATE (7 dec 2009);
I've created a virtual directory in the ISV folder of CRM and uploated an ASP.NET application. Now, if I go to crm.url.nl:5555/ISV/Default.aspx I get;
'Microsoft.Crm.WebServices.Crm2007.CookieAndSoapHeaderAuthenticationProvider, Microsoft.Crm.WebServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' doesn't exist.
Parameter name: Microsoft.Crm.WebServices.Crm2007.CookieAndSoapHeaderAuthenticationProvider, Microsoft.Crm.WebServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
With stacktrace;
[ArgumentException: 'Microsoft.Crm.WebServices.Crm2007.CookieAndSoapHeaderAuthenticationProvider, Microsoft.Crm.WebServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' doesn't exist.
Parameter name: Microsoft.Crm.WebServices.Crm2007.CookieAndSoapHeaderAuthenticationProvider, Microsoft.Crm.WebServices, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]
Microsoft.Crm.Authentication.BaseAuthenticationSettings.CreateType(String typeName, Type requiredBaseType) +265
Microsoft.Crm.Authentication.BaseAuthenticationSettings.CreateProvider(String typeName, IDictionary`2 configuration) +28
Microsoft.Crm.Authentication.AuthenticationPipelineSettings.LoadPipeline() +262
Microsoft.Crm.Authentication.AuthenticationPipelineSettings.get_AuthenticationProvider() +16
Microsoft.Crm.Authentication.AuthenticationEngine.Execute(Object sender, EventArgs e) +524
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
Does anyone have any idea? The .NET application only writes a single word to Response, so there's nothing special there...
Okay, I found out what the idea is.
If you want to do an AJAX call to a dynamic .NET application from CRM 4.0, here's what you do.
Put the assemblies of your .NET application in the CRMWeb/bin folder in the CRM folder. Put you aspx files in a folder in the ISV folder. I used the stunnware.com folder, because it was there, but you may want to create another folder for the sake of tidyness.
Then, in the onSave (or any on- event) put something like this;
var xmlHttp = null;
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
var getstr = "foo=bar&foo2=bar2";
var url = prependOrgName("/ISV/*YOURFOLDER*/Default.aspx?"+getstr);
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
Of course, if you want CRM to do anything with the response of the xml-request you can use the onreadystatechange for that.
Hope this may help other people. It may seem straightforward, but it took me quite a while before I figured out how to do it (although I knew how to use AJAX and .NET and stuff). I think it's a shame that the CRM developers are left out in the cold by Microsoft. They should really put some more time in documenting the SDK and how to do things like this.
Just thinking of things to try here:
The path to your file is within the CRMWeb directory? Do you have a virtual directory set up or anything?
Does the /folder/index.html work in an IFRAME on the same form?
Maybe try something you know will work just to make sure: http://stackoverflow.com or http://google.com.
Also note that MS recommends putting all customizations in the /ISV/ folder. It shouldn't cause 404 errors, but I'm not sure if they'll consider this unsupported.
Are you really calling a html extension? I believe you need to use prependOrgName (see SDK) for aspx and asmx extensions. I'm not sure if it would cause a 404 or just use your default organization off hand though.