eWorld.UI - Matt Hawley

Ramblings of Matt

Throw vs. Throw ex

November 30, 2004 18:21 by matthaw
Thanks to Jackie pointing to this entry, I now realize the importance of using throw versus throw ex. How many of you actually realized that?

Categories: .NET
Actions: E-mail | Permalink | Comments (4) | Comment RSSRSS comment feed

Unleash It Survey

November 30, 2004 01:37 by matthaw

I’ve recently sent out a new beta to my beta group requiring them to fill out a survey. However, that group is limited, and I wanted to get a more broad input on Unleash It. So, please, if you use Unleash It, take a few moments to fill out the following survey using the “Contact” link to the left. Also, if you would like to become a user in my beta group, please indicate this as well!

Survey Questions:

1) How often do you use Unleash It, and is your use for personal or professional deployments?

2) If your use is within your profession, do other team members use Unleash It?

3) Have you utilized any of the included plugins, or have you created some on your own? If you've created some, do you find the documentation provided sufficient? Are there any additions or changes you would like to see with the plugin architecture?

4) What feature do you find most useful? What feature do you find least useful?

5) Are there any other features left lacking that Unleash It can enhance or implement?

6) Have you experienced any problems with the current version of Unleash It, or any previous versions? If you have, were your problems satisfactorily resolved?

7) Would a enterprise edition of Unleash It be something your corporation would use? This would involve having a central repository for profiles, logging of deployments, user authentication, and role based security, etc.

8) Any other comments?



Categories: Unleash It
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Running a Beta Test

November 29, 2004 22:34 by matthaw
I found this article (via Larkware News) on how to run a beta test. Very insightful, and I’ll definately take some pointers based on the results. I’ve also been taking part in another beta test for a piece of software that follows some of the same pointers that I was going to implement myself. All-in-all, its a good read if you ever need to do a beta test.

Categories: General
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Unleash It 2.3.1 Memory Leak

November 24, 2004 01:28 by matthaw

This is just an FYI for users of Unleash It 2.3.1: There was a memory leak found in the latest version that only affects users who test their FTP settings.

If you are a user who tests their FTP settings, and then exit Unleash It, viewing the Task Manager will indicate that “UnleashIt-GUI.exe” is still running. Just kill that process and you’ll be on your merry way.

I have fixed the problem, but due to the nature of many people not using this on a daily basis it is not going to be rolled as an urgent fix. If you’re afflicted with this problem and cannot handle killing the process, please contact me and I will get the updated assemblies to you.



Categories: Unleash It
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Updated Utility: Unleash It 2.3.1

November 23, 2004 18:08 by matthaw

It’s time for a service release that fixes issues with using the Multiple Profile deployment settings. It was brought to my attention that many things were broken with this, and so I took it on to do a service release, one that I don’t normally do, to just get these bugs hammered out so people can continue to use them. Also in this release is an updated version of VisualStyles which will hopefully solve various error messages received when configuring a profile. However, since these are few and far between, please report any problems you’re continuing to have with these. So, here’s the changelog:

  • Fixed: Multiple Deployment only deploying the active profile indicated in single deployment.
  • Fixed: Deleting multiple profile configurations always deleted the last profile.
  • Fixed: Message on multiple profile tab not representing the actual problem why deployment can not continue.
  • Changed: A new process dialog indicating the progress of testing your FTP settings and allows you to cancel has been put in place.
  • Changed: Updated Skybound.VisualStyles to version 1.5.4

This release breaks any previously used plugins built on the 2.3 bits, and will need to be recompiled against the 2.3.1 bits. I will strive in the future to refrain from having to rebuild plugins with new releases, however sometimes this is an issue because many components are updated.

Visit Unleash It’s site to download the 2.3.1 service release!
Visit the Unleash It Forums!
View the Submitted Plugins for Unleash It!



Categories: Unleash It
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Fire in Family

November 22, 2004 17:30 by matthaw

Well, not my family, but my work family. A co-worker’s house caught on fire yesterday morning severly damaging it. Luckily they were out getting family pictures, and only the dogs were there, who were rescued. You can read more at our local newspaper. My company will be starting to take up a collection here to help out. They’re currently staying at the husband’s parents house, but unfortunately, they have very little of anything left. Please keep them in your thoughts.

Update: It has been asked where you can submit your own donation if you feel inclined. If you wish, please send a check / cash / money order to:

Integrity Technology Solutions
Attn: Julie DeMay, Fire Donation
816 S. Eldorado, Suite 4
Bloomington, IL 61701

If you choose to submit a donation through PayPal, please send it to mhawley AT integrityts DOT com with the subject of Fire Donation.

Again, thank you to all who do donate, our co-worker and her family of 3 (will soon be 4 as there’s one on the way) will greatly appreciate it.



Categories: General
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

Annoyance in Regions VS.NET Addin Fixed

November 19, 2004 18:36 by matthaw

If you’ve ever used the Regions Add In for VS.NET 2003, you may have noticed a few annoyances (at least, what I call annoyances because it isn’t the way I program). These include:

  • When adding a new region, it adds a blank line above and below the region.
  • When adding a new region, it doesnt add any blank lines between the region declaration and your code.

To me, this was just a complete annoyance since I like to put spaces between my methods already, and if I come back later to add regions, it starts messing up my source code so that I have several line breaks between my regions. Not to mention its a bit hard to read what the method signature actually is when the region declarations are contained right above your code.

So, with that in mind, I set out this morning (for about 15 minutes) to fix these annoyances. And so, you now have a build of the Regions Addin without these annoyances if you find them to bug you to the end and back.

Download it here! If you need to source, well good luck finding it, its already deleted. However, I modified only a few lines to remove carriage returns and add carriage returns. Something I’m sure you could figure it out too.



Categories: .NET
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed

BlogJet 1.2 BETA Released

November 19, 2004 17:40 by matthaw

Ohh the day has come, hip hip horay! hip hip horay! The folks over at BlogJet have finally released version 1.2 BETA of the ever so popular blogging application, BlogJet. I’ve been waiting for this release for quite some time, and I’m currently using it to post this entry.

The formal, detailed release notes have yet to be launched, but version 1.2 includes the following:

 This version includes long-awaited image resizing, file attachments, extended entries, excerpts and keywords, a brand new code editor with syntax highlighting and better code completion, easier account switching, XML-based drafts, typographic characters and autoreplacement of smilies, full XHTML support.

Can you say, ohhh yeah! The other great thing is that it is a free upgrade to all current customers! So, head over to BlogJet now and get it while its Hot! Hot! Hot!



Categories:
Actions: E-mail | Permalink | Comments (2) | Comment RSSRSS comment feed

Unleash It Plugins Taking Off

November 18, 2004 16:20 by matthaw

So its been about a week since Unleash It 2.3 was released, and so far 2 plugins have surfaced. Talk about getting a good feeling when you see other people start creating things against your product with plugins.

The latest plugin that was released, developed by Josh Kewley, also comes with a thorough article on how he developed the plugin. He also gives his advice on how to debug your plugin (which I will be incorporating into the plugin information).

So, if you get a chance, hop on over to the plugins forums and read up on Josh's experiences. Both of which will help you out in the longrun if you need to create your own plugin for Unleash It!



Categories: .NET | Unleash It
Actions: E-mail | Permalink | Comments (1) | Comment RSSRSS comment feed

Custom Web App and Reporting Services Integration: Part 2, Reporting Services API

November 18, 2004 00:47 by matthaw

Preface:
The following is a series on integrating your custom web applications with SQL Server Reporting Services. It is intended to provide useful information for other developers posed with the same problem of integrating these two seamlessly.

For the situation and notes, please view Part 1 of this series.

Utilizing Reporting Services API:
In Part 1 of this series we discussed setting up authentication on your custom web application, reporting services, and the Windows server / Active Directory. Part 2 will be discussing how to utilize the Reporting Services API exposed by Web Services. This API is intended for use by developers for integration scenarios just like this, and it is very important to understand how to actually use it. The entire API is very extensive and exhaustive, and in reality, you will only use 5%. For more information on the API, visit the MSDN documentation.

As the documentation states, the Reporting Services API can be accessed via Web Services at the URL http://<SERVER>/ReportServer/ReportService.asmx. Using Visual Studio .NET (or if you prefer the command line WSDL EXE), you should create a proxy for use in your custom web application. If you're using Visual Studio .NET to create the proxy, you should see the listing of all the classes, methods, and properties that it exposes...which I've subtly named "everything under the sun except for the kitchen sink." Just glancing through the listing, you will want to note the most important class of them all "ReportingService." This class exposes everything that you would really want in just a basic application.

So, enough looking, and add that puppy so we can start working!

The most important item that must be done prior to using the Reporting Services API, is that you need to pass credentials with any call to the API. To do this, the class ReportingService inherits a property called Credentials. And, as you guessed it, is where you will add your credentials. So, exactly how do the credentials fit in, and how do I access them? Well, that was the whole idea behind Part 1 of this series, setting your application up properly so that this daunting task is super easy.

Remembering back to Part 1, we're using impersonation of the currently logged in user within the current thread context of the web application when it is running. What this means is that our web application is running as if it my user, thus enabling me to pass the credentials of the web application onto the API. By simply calling a single line of code, we've now setup our instance of the Reporting Services API to be executed as if I were going to it directly via URL:

// create an instance of the reporting service
ReportingService rs = new ReportingService();

// set the URL of our reporting server
rs.Url =
http://rptsrv/ReportServer/ReportingService.asmx

// set the credentials
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;

So, now our credentials are being set - which means that we can now start calling methods to do certain functionality. In the application we built, it was necessary to retrieve the reports dynamically based on the users' role and supply these reports in a drop down list for the user to select and run. To accomplish this task, we needed to look at the method ListChildren which takes in a folder path and boolean value indicating if a recursive search should be performed. This method returns an array of CatalogItem classes that allow us to determine if the item returned was a report, and if it was, the path, name, and other important information. Here's an example of retrieving the reports for a given path:

// retrieve the catalog items for the demo reports folder
ReportingServices.CatalogItem[] items = rs.ListChildren("/Demo Reports", false);

// cycle through the items returned and add them to the drop down list if it is a report
foreach(CatalogItem item in items) {
    if(item.Type == ItemTypeEnum.Report) {
        ddlReports.Items.Add(new ListItem(item.Name, item.Path));
    }
}

So, now we have a listing of reports in the Demo Reports folder. Pretty simple right? You betcha. It's now time to take a selected report and view that report in a separate browser window (code which you can figure out!). So, in a button's OnClick method, we open a new window and supply a URL to the reporting server that will automatically display the report. Sounds simple enough right? Well, kinda - it takes some know-how on how to construct the URL properly.

The great thing is that you can pass just about everything in the URL by Query String parameters to control how the report will be rendered to the user. If you're familiar with viewing the reports currently, you'll remember that there are two toolbar items. One being the Toolbar that displays the paging and export interface, and the other being the toolbar containing all custom report properties that can be searched on. By passing just a few parameters in the querystring, you can control if those are displayed or not. Another very important query string parameter handles how the report will be rendered (HTML, PDF, CSV, etc.) when first accessed. So, what exactly are these parameters?

  • rs:Toolbar - The toolbar for the paging / export functionality. It is a boolean value indicating if it is visible or not. Supplying True, Default, or leaving it off will commonly display it.
  • rs:Parameters - The toolbar displaying the report parameters. It, like the above, is a boolean value indicating if it is visible or not. Supplying True, Default, or leaving it off will commonly display it. In general, we'll be passing the report parameters values by querystring from our application, so I suggest setting this parameter to False.
  • rs:Format - The format the report will originally be rendered as when first viewed. If left off, the report will be rendered as HTML. Other values include PDF, HTML4.0, etc. More information on the allowed values can be retrieved from the documentation.

A caveat I found out is that Gecko based browsers (yes, this includes Firefox, Mozilla, and Netscape) don't like to render the Toolbar / Parameter bar properly, basically rendering it useless. So, when developing your URL, I advise that you check to see if it is a Gecko based browser, and render it as PDF. Sure, you loose a lot of functionality of the report (drill downs, etc), but my guess is that these wouldn't have worked in the first place with the Gecko based browser.

Previously, I mentioned that commonly we'll be supplying our own user interface for parameter selection rather than relying on the rudimentary parameter selection interface from Reporting Services. To pass these values, you need only to add additional query string parameters. The name of the parameter being the name of which field it should map to in the report and obviously, the value being what you want to pass. So, that's enough talking about building the URL, I guess you're probably getting ants-y and wanting to see how to do it:

string url = "http://rptsrv/ReportServer/?" + ddlReports.SelectedValue;

if(Request.UserAgent.IndexOf("Gecko") >= 0)
   
// this is a gecko based browser, render the report as PDF
    url += "&rs:Command=Render&rs:Format=PDF&rc:Toolbar=False&rc:Parameters=False";
else
    // this is a browser that is supported for paging / exporting, render as HTML
    url += "&rs:Command=Render&rc:Parameters=False";

// add any custom parameters
url += "&year=2004";

// redirect to the report
Response.Redirect(url);

Okay, so assuming you're on a single server environment or using Active Directory as your authentication, you should (upon submitting the form to view the report) be seamlessly passed directly to the rendered report.

Other Rendering Capabilities:
There are other methods of rendering using the Reporting Services API, however these are outside of the scope of this article. If you would like more information on using these methods of rendering, I'd suggest reading this great article on 15 Seconds, as well as checking out the Render method of the API. In a nutshell, the afformentioned method will allow you to stream the report and save / display it in any manner you wish, which could be very beneficial in creating custom reporting solutions for windows applications.

Secondly, apart of the Reporting Services samples installed on your development machine (which oddly enough I didn't install), is a compiled assembly called "ReportViewer.dll" that is a ASP.NET Custom Control for rendering reports directly within a webpage. If you visit the previously mentioned 15 Seconds article (In part 2) they describe how you can utilize that control. After playing with it though, I realized that it generated an IFrame, which as most of you know is BAD BAD BAD! Thats why I went the alternate route and did the redirection.

So, this currently ends my 2 part series on integrating Custom Web Applications and Reporting Services. I hope you found both parts extremely beneficial, and hope that they provided you with as much information that I lacked when trying to figure this out. Lastly, I did want to give props to my good buddy Ryan Rinaldi who helped me figure some of the authentication issues!



Categories: .NET
Actions: E-mail | Permalink | Comments (0) | Comment RSSRSS comment feed


Copyright © 2000 - 2024 , Excentrics World