Thursday, September 29, 2011

CAPICOM: Keyset does not exist

Recently I have been trying to port a classic ASP application to ASP.Net. The major thing to do was to keep using CAPICOM for encryption. The reason was that the data we encrypt goes to a 3rd party vendor who decrypts them using CAPICOM and they were not going to change their side of the program.

Two specific problems that I encountered whenever deploying my application to servers.
a.) Retrieving the COM class factory for component with CLSID {94AFFFCC-6C05-4814-B123-A941105AA77F} failed due to the following error: 80040154
This I could resolve by registering the CAPICOM dll on the server (regsvr32). I was assuming that this would not be necessary given that I have a .Net wrapper around the CAPICOM dll (using tlbimp. MSDN).

b.) Keyset does not exist
Searching on Bing/Google led me to several sites saying it's permission issue on the Machine Keys folder. I tried setting permission for all users I could think of: ASPNet, IUSR, IWAM, Service Account. But this did not help. Then I imported the certificate from the old machine where classic ASP application is running and voila! the encryption algorithm started working. I removed all permission settings for the ASP.Net users mentioned before and it still worked.
I am not sure why this is!

Wednesday, September 28, 2011

Surface Area Configuration: Computer localhost does not exist on the network, or the computer cannot be configured remotely

I was trying to connect to a local instance of SQL Server from a Dev app server. The application would fail saying
A connection was successfully established with the server, but then an error occurred during the pre-login handshake. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 0 - No process is on the other end of the pipe.)
So I brought up the SQL Server Surface Area Configuration tool (Programs> SQL Server 2005> Configuration Tools >SQL Server Surface Area Configuration) and clicked on Surface Area Configuration for Services and Connections. And this will throw an error:
TITLE: Surface Area Configuration ------------------------------ Computer localhost does not exist on the network, or the computer cannot be configured remotely. Verify that the remote computer has the required Windows Management Instrumentation components and then try again. (SQLSAC) ------------------------------ ADDITIONAL INFORMATION: An exception occurred in SMO while trying to manage a service. (Microsoft.SqlServer.Smo) For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.3042.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.InnerWmiException&LinkId=20476 ------------------------------ Failed to retrieve data for this request. (Microsoft.SqlServer.SmoEnum) For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476 ------------------------------ Invalid class (System.Management) ------------------------------ BUTTONS: OK ------------------------------
While searching for a solution I came across this blog http://blogs.msdn.com/b/echarran/archive/2006/01/03/509061.aspx. Ran the command as mentioned there and I was able to bring up the Surface Area Configuration tool.

Thursday, September 8, 2011

Interdev connection failed: Method not allowed(Error code = 80070005)

I was recently re-writing a classic ASP web application into .Net. So I was trying to create a web project in Visual Studio InterDev when I got this error. My environment: XP SP2, IIS 6. Resolution: I did not have Microsoft FrontPage extensions installed. To check a.) go to Control Panel > Add Remove Programs > Add Remove Windows Component b.) Select Internet Information Services (IIS) c.) Click Details and ensure FrontPage 2000 Server Extensions option is checked. If not, check it and click OK. That did it for me and may help you too.