If you are unable to use intallutil /u assemblyName.exe becuase the assembly no longer exists or something like that, this is the EASY WAY :
sc delete SERVICENAME
I found this on "StackOverflow" derivative called "SuperUser" :
A collaboratively edited question and answer site for computer enthusiasts – on any platform. It's 100% free, no registration required.
http://superuser.com/questions/49185/how-to-remove-a-dead-service-in-windows-xp
Thursday, November 19, 2009
Monday, November 17, 2008
Creating RESTful Web Service Using System.Web.Routing Part 1
- Created new ASP.NET web site using VS 2008
- Deleted default .aspx page
- Added Global Application File (Global.asax)
- Added following code to Application_Start() method in Global.asax
Route route = new Route("students", new StudentsRouteHandler());
RouteTable.Routes.Add(route); - Added following class:
public class StudentsRouteHandler : IRouteHandler, IHttpHandler {
public IHttpHandler GetHttpHandler(RequestContext requestContext) {
return (this);
}
public void ProcessRequest(HttpContext context) {
context.Response.Write("<h1>Hello World!</h1>");
}
public bool IsReusable { get; set; }
} - Added the following to the httpmodules section of the Web.config :
<add name="Routing" type="System.Web.Routing.UrlRoutingModule,
system.Web.Routing, Version=3.5.0.0, Culture=neutral,PublicKeyToken=31BF3856AD364E35"> - Edited 'properties' of new web project on 'Web' tab configured it to use IIS server rather than visual studio development server. A new virtual directory is created as a side effect of this.
- In iis.msc edited properties of new site. On 'Directory Security' tab clicked on 'Configure' button and CHECKED the Integrated Windows Authentication check box all the way at the bottom
- Last but not least, in iis.msc edited properties of new site. On Virtual Directory tab clicked on 'Configuration' Button.
Added:
Executable: c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll
Extension: .*
All Verbs
UN-CHECK 'Check that file exists'
While trying to get it to work I mixed in a superstitious IISReset. I'm not sure if its required but I think not.
Wednesday, November 12, 2008
Visual Studio Still Refuses to Eat Its Own Syntactic Candy
Its been available since VS 2005 but even as of VS 2008 the designer still generates:
When this will suffice:
_fooGrid.CurrentCellDirtyStateChanged += new System.EventHandler(this._fooGrid_CurrentCellDirtyStateChanged);
When this will suffice:
_fooGrid.CurrentCellDirtyStateChanged += _fooGrid_CurrentCellDirtyStateChanged;
Wednesday, October 29, 2008
How Grownups Debug Windows Service Startups
using System.ServiceProcess;
namespace MyService {
public partial class MyService : ServiceBase {
public MyService() {
InitializeComponent();
}
protected override void OnStart(string[] args) {
//This will launch a debugger
System.Diagnostics.Debugger.Launch();
//Do the real job
MyWorker.Start();
}
}
}
Perpetuating a Meme
So I was checking out Eric Evans' Blog today and I saw a post where he perpetuated this "Random CD Cover Creation" meme. Looked fun and easy.
So Here's Mine (The band's name is Denim not Mined I was just trying to be arty and cool and stuff):

... and Here's the Meme:
1. Use Wikipedia's random article page to find your band name.
2. Go to the Random Quotations Page. The last four words of the very last quote is your album name.
3. Visit Flickr's interesting photos page, the third image, no matter what, is your cover art.
So Here's Mine (The band's name is Denim not Mined I was just trying to be arty and cool and stuff):

... and Here's the Meme:
1. Use Wikipedia's random article page to find your band name.
2. Go to the Random Quotations Page. The last four words of the very last quote is your album name.
3. Visit Flickr's interesting photos page, the third image, no matter what, is your cover art.
Thursday, October 16, 2008
In a Nutshell, The Difference between an Event and a Delegate
An event simply adds a layer of protection over a delegate instance.
This protection prevents clients of the delegate from resetting the delegate and its invocation list, and only allows adding or removing targets from the invocation list.
Source: http://weblogs.asp.net/rosherove/archive/2004/03/28/100444.aspx
An esteemed colleague directed me to a post (can't recall) that further elaborates on the distinction. The main one that I remember is that in addition to the = restriction, invocations of an Event are restricted to the class that owns the event.
So if you want to allow other classes to raise an event you must expose a public method to that delegates the raising.
This protection prevents clients of the delegate from resetting the delegate and its invocation list, and only allows adding or removing targets from the invocation list.
Source: http://weblogs.asp.net/rosherove/archive/2004/03/28/100444.aspx
An esteemed colleague directed me to a post (can't recall) that further elaborates on the distinction. The main one that I remember is that in addition to the = restriction, invocations of an Event are restricted to the class that owns the event.
So if you want to allow other classes to raise an event you must expose a public method to that delegates the raising.
Thursday, November 29, 2007
How to capture the IP Address of the Oracle client making the data request
The key player is SYS_CONTEXT as in:
Select SYS_CONTEXT('USERENV','IP_ADDRESS') FROM dual
Here's a trigger that captures the ip addresses of clients deleting rows from a table:
CREATE OR REPLACE TRIGGER "MYSCHEMA"."SESSIONWATCHER" BEFORE
DELETE ON "MYSCHEMA"."CURRENTUSERSESSION" DECLARE
SInfo MYSCHEMA.SESSIONHISTORY.INFO%TYPE;
BEGIN
SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') INTO SInfo FROM dual;
INSERT INTO MYSCHEMA.SESSIONHISTORY VALUES (SInfo);
END SessionWatcher;
Select SYS_CONTEXT('USERENV','IP_ADDRESS') FROM dual
Here's a trigger that captures the ip addresses of clients deleting rows from a table:
CREATE OR REPLACE TRIGGER "MYSCHEMA"."SESSIONWATCHER" BEFORE
DELETE ON "MYSCHEMA"."CURRENTUSERSESSION" DECLARE
SInfo MYSCHEMA.SESSIONHISTORY.INFO%TYPE;
BEGIN
SELECT SYS_CONTEXT('USERENV','IP_ADDRESS') INTO SInfo FROM dual;
INSERT INTO MYSCHEMA.SESSIONHISTORY VALUES (SInfo);
END SessionWatcher;
Wednesday, February 21, 2007
NCover and NCover Console
For a free code coverage solution NCover is pretty darn nifty and NCover Explorer Rocks on top of it:
NCover
NCover Explorer
NCover
NCover Explorer
Tuesday, February 06, 2007
Unable to load DLL 'OraOps10.dll': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
That pesky problem has reared its ugly head again!
I remembered that its a permissions problem but forgot the wrinkle where you have to REMOVE THE PERMISSION AND THEN GIVE IT BACK.
See bold type below:
Solution Description:
Follow these steps to restore default access to Read and Execute access for Windows authenticated users:
1. Log on to Windows with administrator privileges.
2. Launch Windows Explorer from the Start Menu.
3. Navigate to the ORACLE_HOME directory and right click on the ORACLE_HOME folder icon.
4. Select the "Properties" option from the drop down list. A "Properties" window should appear.
5. Click on the "Security" tab on the "Properties" window.
6. Click on Autheticated Users in the "Name" list.
7. Uncheck the "Read and Execute" box in the "Permissions" list. This box will be under the "Allow" column.
8. Check the "Read and Execute" box. This is the box you just unchecked.
9. Click the "Apply" button.
10. Click the "OK" button.
Why I audah ......
I remembered that its a permissions problem but forgot the wrinkle where you have to REMOVE THE PERMISSION AND THEN GIVE IT BACK.
See bold type below:
Solution Description:
Follow these steps to restore default access to Read and Execute access for Windows authenticated users:
1. Log on to Windows with administrator privileges.
2. Launch Windows Explorer from the Start Menu.
3. Navigate to the ORACLE_HOME directory and right click on the ORACLE_HOME folder icon.
4. Select the "Properties" option from the drop down list. A "Properties" window should appear.
5. Click on the "Security" tab on the "Properties" window.
6. Click on Autheticated Users in the "Name" list.
7. Uncheck the "Read and Execute" box in the "Permissions" list. This box will be under the "Allow" column.
8. Check the "Read and Execute" box. This is the box you just unchecked.
9. Click the "Apply" button.
10. Click the "OK" button.
Why I audah ......
Friday, January 26, 2007
Quiet BackgroundWorker Exceptions
The System.ComponentModel.BackgroundWorker catches all of its exceptions as well as those emanating from the delegate that you wired up as a DoWorkEventHandler. If you don't check the e.Error property of the RunWorkerCompletedEventArgs passed to the delegate you wired
up as a RunWorkerCompletedEventHandler then you've set yourself up with a real trooper of a BackgroundWorker. All hell could break loose during its processing but it won't make a peep!
Spinning off threads via:
Is not nearly so tolerant.
up as a RunWorkerCompletedEventHandler then you've set yourself up with a real trooper of a BackgroundWorker. All hell could break loose during its processing but it won't make a peep!
Spinning off threads via:
Thread th = new Thread(new ThreadStart(myThreadStartMethod));
th.Start();
Is not nearly so tolerant.
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
// IF YOU DON'T CHECK e.Error != null THEN BAD THINGS CAN
// HAPPEN IN YOUR WORKER BUT NO ONE WILL EVER KNOW!!!!!!!
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
if(e.Error != null) {
MessageBox.Show(e.Error.Message);
}
else if(e.Cancelled) {
// Next, handle the case where the user canceled
// the operation.
// Note that due to a race condition in
// the DoWork event handler, the Cancelled
// flag may not have been set, even though
// CancelAsync was called.
resultLabel.Text = "Canceled";
}
else {
// Finally, handle the case where the operation
// succeeded.
resultLabel.Text = e.Result.ToString();
}
// Enable the UpDown control.
this.numericUpDown1.Enabled = true;
// Enable the Start button.
startAsyncButton.Enabled = true;
// Disable the Cancel button.
cancelAsyncButton.Enabled = false;
}
Friday, January 12, 2007
Checking Status of Currently Open Cursors in ORACLE
Pesky too many open cursors error from ORACLE can be investigated with the help
of the following code:
--total cursors open, by username & machine
select sum(a.value) total_cur, avg(a.value) avg_cur, max(a.value) max_cur,
s.username, s.machine
from v$sesstat a, v$statname b, v$session s
where a.statistic# = b.statistic# and s.sid=a.sid
and b.name = 'opened cursors current'
and s.machine in ('MY Machine', 'His Machine', 'Her Machine')
group by s.username, s.machine
order by 1 desc;
Visit this nice link for more info
of the following code:
--total cursors open, by username & machine
select sum(a.value) total_cur, avg(a.value) avg_cur, max(a.value) max_cur,
s.username, s.machine
from v$sesstat a, v$statname b, v$session s
where a.statistic# = b.statistic# and s.sid=a.sid
and b.name = 'opened cursors current'
and s.machine in ('MY Machine', 'His Machine', 'Her Machine')
group by s.username, s.machine
order by 1 desc;
Visit this nice link for more info
Subscribe to:
Posts (Atom)
C# Sucks!
JK!! Seriously, though, somewhere around C#-3 we should have inculcated ourselves with the question: "Does 'CAN' == 'SHOULD...
-
That pesky problem has reared its ugly head again! I remembered that its a permissions problem but forgot the wrinkle where you have to REMO...
-
For a free code coverage solution NCover is pretty darn nifty and NCover Explorer Rocks on top of it: NCover NCover Explorer