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.

Tuesday, July 19, 2011

Case Insensitive Replace() function

For some reason .Net framework does not have the case insensitive replace method in the String class. I found it can very easily be implemented for String class using Extension Method feature of .Net.

Here's the method:
public static string Replace(this string originalString, string oldValue, string newValue, StringComparison comparisonType)
{
int startIndex = 0;
while (true)
{
startIndex = originalString.IndexOf(oldValue, startIndex, comparisonType);
if (startIndex == -1)
break;

originalString = originalString.Substring(0, startIndex) + newValue + originalString.Substring(startIndex + oldValue.Length);

startIndex += newValue.Length;
}

return originalString;
}


And calling this method seems trivial:
originalString = originalString.Replace(@"ABCD", "abcd", StringComparison.InvariantCultureIgnoreCase);


That's it.

Monday, July 18, 2011

CSS Refresh issue in Firefox

While developing a website in ASP.Net I noticed that my CSS file was not immediately refreshed in Firefox and until I noticed; it caused me to think that the CSS I was trying is not correct. Ctrl+F5; Ctrl+R etc does not work.

I found modifying the entry in config did the trick for me:
network.http.use-cache = false


But I believe it should not be that you have to modify config file for the new CSS to load into the browser. But for now this works.

Monday, June 27, 2011

Metadata contains a reference that cannot be resolved

While adding a service reference to my project, I started getting an error

The HTML document does not contain Web service discovery information.
Metadata contains a reference that cannot be resolved: 'http://localhost/IDM.ProVue.DAWS/WS_Results.svc'.
Content Type application/soap+xml; charset=utf-8 was not supported by service http://localhost/IDM.ProVue.DAWS/WS_Results.svc. The client and service bindings may be mismatched.
The remote server returned an error: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'..
If the service is defined in the current solution, try building the solution and adding the service reference again.


I had added other service references without issues and was having a bit of trouble finding out what the problem is. The suggestions given in browser (if you try to browse from IIS Manager) were about setting httpGetEnabled to true. So I checked in the web.config of my service site and found it was set to true.

When I opened the WCF config editor (my preferred way of modifying service site web config) I saw that the "Behavior Configuration" value for the the service was not set. Selecting the right behavior from the drop down was all that I needed to do.

Wednesday, June 22, 2011

Dundas Chart and AJAX Calendar control overlap issue

The layout of my webpage (an ASP.Net content page) was:
Date Picker
Dundas Chart

The page displayed fine but if you click on the calendar image button of the calendar control, the view that pops up is rendered behind the chart control. This was happening in Chrome, FF & IE.

I found a discussion on Dundas support forum: http://support2.dundas.com/forum/tm.aspx?m=6100&mpage=1&key=&
Even after overriding the style class (.ajax__calendar or ajax__calendar_container) in my .css file I could not get the calendar to show up on top of the dundas chart.

and the thing that worked for me was putting the style in the .ascx file
<*style type="text/css">
.ajax__calendar_container { z-index : 1000 ; }
<*/style>
I am still not sure why this happens, but that's what worked for now. If I get a satisfactory explanation I'll post here.

Thursday, February 24, 2011

System.UnauthorizedAccessException: Access to the path is denied

During my recent deployment to a QA box, one of the functionalities "Upload File" of the web app would not work.

Here is what I had done. During development I observed that the file upload would work when I was running the app in Debug mode, from within Visual Studio. When I tried running the app from virtual directory (as in http://localhost/MyApp/Upload.aspx) the file upload would fail with "Logon failure: unknown user name or bad password", about which I blogged a while ago. And hence I added the code to impersonate the current logged in user. And it worked fine.

However, the same impersonation code would not work when the app was deployed on the server. Another thing I should point out is, the file copy is happening on a server different from the app server. When I commented out the impersonation code, it started working. I am still not sure why it so happened.


Windows authentication for an NT group

Recently I implemented authentication system where the logged in user has to be part of the company domain (handled by IIS) and should belong to an app specific NT group. The code used was simple
foreach (System.Security.Principal.IdentityReference group in currentContext.Request.LogonUserIdentity.Groups)
{
groupName = group.Translate(typeof(System.Security.Principal.NTAccount)).ToString();
if (groupName.Equals(userGroup, StringComparison.InvariantCultureIgnoreCase))
{
userIsInGroup = true;
break;
}
}

It worked fine on development machine, but would redirect me to access denied page on the QA server.

After logging the current context user in app (during security check) I found the web app was running under the admin account. And the admin account was not part of my app NT group. The reason this was happening was because Windows explorer cached the admin account credentials, that I use for copying the published files on the server.

To clear the cache, I had to run the following from command prompt:
rundll32.exe keymgr.dll, KRShowKeyMgr
This brings up a UI that has all the server names for which Windows explorer has cached the credentials. Select the server and click on "Remove" and that should do the trick.