I just spent couple of hours fighting "This report requires a default or user-defined value for the report parameter" error.
Report worked fine in report designer, but refused to properly render in serverReport.Render(...) method.
I tried Google Search and all voodoo magic, including:
- Renaming my parameter;
- Set default value for my parameter;
- Restarting VS.NET;
- Re-creating my report from scratch.
Nothing helped.
I even though about manual rebuilding OLAP cube in Analysis Server ...
But then I simply changed "Available values" [for my parameter] from "From query" to "Non-queried".
That helped.
Enjoy!
:-)
Keywords: VS 2005, VS2005, Visual Studio .NET 2005, OLAP, Microsoft Reporting Services, Microsoft Analysis Services, Microsoft SQL Server 2005, C#, VB.NET.
Tuesday, March 06, 2007
Friday, February 23, 2007
Google Desktop can be hacked
This very interesting article explains in details how cross site scripting can be used to hack google desktop (if new version of Google desktop in not installed yet):
Overtaking-Google-Desktop.pdf
This demo shows how potential hacker can operate:
Demonstration of Google Desktop vulnerability
The article is pretty impressive and made me think about XSS vulnerability of my own postjobfree.com web site.
Keywords: XSS, Web site security, javascript, hacker attack, XSS, RegEx, hack, Google Desktop.
Overtaking-Google-Desktop.pdf
This demo shows how potential hacker can operate:
Demonstration of Google Desktop vulnerability
The article is pretty impressive and made me think about XSS vulnerability of my own postjobfree.com web site.
Keywords: XSS, Web site security, javascript, hacker attack, XSS, RegEx, hack, Google Desktop.
Labels:
Google Desktop,
hack,
hacker attack,
javascript,
RegEx,
Web site security,
XSS
Thursday, February 22, 2007
Geeks Rule and MBAs
Eric Sink (SourceGear) recommends to start software company with developers only.
====
Geeks Rule and MBAs Drool
It is common to see software companies starting out with two founders, a geek and an MBA. Do you really need the MBA?
If I were to oversimplify the message of this article, I would make two statements:
Developers add more value to a software company than anybody else.
The truth of statement 1 is inversely correlated with the size of the company.
When a company is very small or just getting started, nobody can add value as well as a developer because there isn't really much other stuff that needs to be done. You don't have customers yet.
====
====
Geeks Rule and MBAs Drool
It is common to see software companies starting out with two founders, a geek and an MBA. Do you really need the MBA?
If I were to oversimplify the message of this article, I would make two statements:
Developers add more value to a software company than anybody else.
The truth of statement 1 is inversely correlated with the size of the company.
When a company is very small or just getting started, nobody can add value as well as a developer because there isn't really much other stuff that needs to be done. You don't have customers yet.
====
Thursday, January 25, 2007
Health Monitoring in ASP.NET 2.0
Health Monitoring in ASP.NET 2.0 helps monitor problems in your application. Here's nice MSDN article about it:
How To: Use Health Monitoring in ASP.NET 2.0
In particular,
System.Web.Management.SqlWebEventProvider works quite good out of the box.
Note, that Health Monitoring designed for web forms applications and does not target winforms applications.
For example, if you want logging Windows Services, Log4Net 3rd party component, or through embedded System.Diagnostics.EventLog component are the ways to go.
If you want to get error messages from your site through email, read this:
How to: Send E-mail for Health Monitoring Notifications
Note, however, that SimpleMailWebEventProvider has some unpleasant limitations:
1) You cannot send emails using SSL SMTP, so Gmail's SMTP is not available for you. The reason here is that uses standard SMTP ASP.NET provider, and standard SMTP ASP.NET provider is not fully configurable through web.config.
There is no way for you to specify:
smtpClient.EnableSsl = true;
As a result, emails sent through Google's SMTP are simply dissappear.
2) You cannot override SimpleMailWebEventProvider provider, because it's sealed.
So, you have to write your own mail provider from scratch.
Implementing your own isn't very hard.
I tried to inherit my EmailEventProvider from MailWebEventProvider, but I couldn't even make the code compile. It seems that MailWebEventProvider if poorly written (yeap, not every developer at MS is good).
But inheriting from BufferedWebEventProvider worked like a charm.
Here's the C# code:
=======================
using System;
using System.Text;
using System.Web;
using System.Web.Management;
using System.Configuration;
using System.Collections.Specialized;
namespace MyNameSpace
{
sealed class EmailEventProvider : BufferedWebEventProvider
{
private string _to;
private string _subject;
public override void Initialize(string name, NameValueCollection config)
{
GetAndRemoveStringAttribute(config, "to", ref this._to);
GetAndRemoveStringAttribute(config, "subject", ref this._subject);
if (string.IsNullOrEmpty(this._to))
{
throw new ConfigurationErrorsException(string.Format("Recipient must be defined for {0}provider", name));
}
base.Initialize(name, config);
}
private static void GetAndRemoveStringAttribute(NameValueCollection config, string attrib, ref string val)
{
val = config.Get(attrib);
config.Remove(attrib);
}
public override void ProcessEventFlush(WebEventBufferFlushInfo flushInfo)
{
StringBuilder sb = new StringBuilder();
// Write flushInfo.Events:
foreach (WebBaseEvent wbe in flushInfo.Events)
{
sb.AppendFormat("{0}\r\n", wbe.ToString(true, true));
}
SendMail(DateTime.Now.ToString(), _to, _subject, sb.ToString());
}
}
}
=======================
Here's web.config's code:
----------------
<healthMonitoring enabled="true" heartbeatInterval="0" >
<providers>
<add name="MyEmailEventProvider" type="MyNameSpace.EmailEventProvider" buffer="false"
to="xxx@gmail.com"
subject="Crash in MyAspNet app" />
</providers>
<rules>
<add name="All Errors by Email" eventName="All Errors" provider="MyEmailEventProvider" />
</rules>
</healthMonitoring>
----------------
How To: Use Health Monitoring in ASP.NET 2.0
In particular,
System.Web.Management.SqlWebEventProvider works quite good out of the box.
Note, that Health Monitoring designed for web forms applications and does not target winforms applications.
For example, if you want logging Windows Services, Log4Net 3rd party component, or through embedded System.Diagnostics.EventLog component are the ways to go.
If you want to get error messages from your site through email, read this:
How to: Send E-mail for Health Monitoring Notifications
Note, however, that SimpleMailWebEventProvider has some unpleasant limitations:
1) You cannot send emails using SSL SMTP, so Gmail's SMTP is not available for you. The reason here is that uses standard SMTP ASP.NET provider, and standard SMTP ASP.NET provider is not fully configurable through web.config.
There is no way for you to specify:
smtpClient.EnableSsl = true;
As a result, emails sent through Google's SMTP are simply dissappear.
2) You cannot override SimpleMailWebEventProvider provider, because it's sealed.
So, you have to write your own mail provider from scratch.
Implementing your own isn't very hard.
I tried to inherit my EmailEventProvider from MailWebEventProvider, but I couldn't even make the code compile. It seems that MailWebEventProvider if poorly written (yeap, not every developer at MS is good).
But inheriting from BufferedWebEventProvider worked like a charm.
Here's the C# code:
=======================
using System;
using System.Text;
using System.Web;
using System.Web.Management;
using System.Configuration;
using System.Collections.Specialized;
namespace MyNameSpace
{
sealed class EmailEventProvider : BufferedWebEventProvider
{
private string _to;
private string _subject;
public override void Initialize(string name, NameValueCollection config)
{
GetAndRemoveStringAttribute(config, "to", ref this._to);
GetAndRemoveStringAttribute(config, "subject", ref this._subject);
if (string.IsNullOrEmpty(this._to))
{
throw new ConfigurationErrorsException(string.Format("Recipient must be defined for {0}provider", name));
}
base.Initialize(name, config);
}
private static void GetAndRemoveStringAttribute(NameValueCollection config, string attrib, ref string val)
{
val = config.Get(attrib);
config.Remove(attrib);
}
public override void ProcessEventFlush(WebEventBufferFlushInfo flushInfo)
{
StringBuilder sb = new StringBuilder();
// Write flushInfo.Events:
foreach (WebBaseEvent wbe in flushInfo.Events)
{
sb.AppendFormat("{0}\r\n", wbe.ToString(true, true));
}
SendMail(DateTime.Now.ToString(), _to, _subject, sb.ToString());
}
}
}
=======================
Here's web.config's code:
----------------
<healthMonitoring enabled="true" heartbeatInterval="0" >
<providers>
<add name="MyEmailEventProvider" type="MyNameSpace.EmailEventProvider" buffer="false"
to="xxx@gmail.com"
subject="Crash in MyAspNet app" />
</providers>
<rules>
<add name="All Errors by Email" eventName="All Errors" provider="MyEmailEventProvider" />
</rules>
</healthMonitoring>
----------------
Thursday, December 28, 2006
Intelligent Job Search
www.ijsearch.com allows searching for jobs from several major job portals simultaneously.
Monday, December 11, 2006
ReportViewer Control
Reporting Made Easy is a nice article about new ReportViewer Control in Visual Studio 2005.
ReportViewer Control allows to create good-looking and robust reports in ASP.NET 2.0.
Also article discusses relationships between ReportViewer Control and SQL Server 2005 Reporting Services.
Technologies: ASP.NET 2.0, C#, VB.NET, SQL Server.
ReportViewer Control allows to create good-looking and robust reports in ASP.NET 2.0.
Also article discusses relationships between ReportViewer Control and SQL Server 2005 Reporting Services.
Technologies: ASP.NET 2.0, C#, VB.NET, SQL Server.
Monday, November 20, 2006
Scott Guthrie on history of ASP.NET
ARCast - Scott Guthrie - the man, the myth, the legend
Scott Guthrie talks about history of developing ASP.NET, importance of prototyping, and more...
Scott Guthrie talks about history of developing ASP.NET, importance of prototyping, and more...
Subscribe to:
Posts (Atom)