Wednesday, September 2, 2009

Error "401 Unauthorized" For MOSS FBA

When you have SharePoint Server 2007 implementation with Form Based Authentication (FBA) and anonymous access turned on you may experience 401 Unauthorized when you visit the site like http://xxxxxx/sites123/pages123/default.aspx

Look into your web.config file for Web Application that you extended to use FBA for *compilation* tag and edit it to make it look like below. Save the web.config and give it a run.

*compilation batch="false" debug="false" /*

Note: Please replace * (Blogger not support HTML tagging)

And also when you visit the URL could you please check which Zone does the site belong to in the IE status bar?
I suppose the URL belongs to the Local Intranet Zone or Trusted Sites which automatically log on with your current Windows credential. If your windows credential does not have the permission to access the site, you would get 401 Unauthorized error. If so, please remove the sites from the Local Intranet Zone or Trusted Sites and try again.

Hope it will help !! :-)

Tuesday, August 25, 2009

Change SharePoint 'Document library/List' Column width

Sometimes we need to change default column width of document library/list.To change sharepoint document library/list column we need to add a content editor webpart on that perticular page and need to write below code as javascript script. (use below code within javascript tag)

_spBodyOnLoadFunctionNames.push("ModifiyCommentWidth");
function ModifiyCommentWidth() {
for (var i = 0, l = document.getElementsByTagName("TH").length; i < l; i++) { var thisTH = document.getElementsByTagName("TH")[i]; if (thisTH.className == 'ms-vh2-nograd') { if (thisTH.innerText == 'Comments') {
thisTH.style.width = "300px";
}
}


Please ensure tag name before use this line of code because this is not same for all. This is working in my case but you need to update tag names accordingly.

Tuesday, August 18, 2009

ListTemplateId for Event List

  1. GenericList 100
  2. DocumentLibrary 101
  3. Survey 102
  4. Links 103
  5. Announcements 104
  6. Contacts 105
  7. Events 106
  8. Tasks 107
  9. DiscussionBoard 108
  10. PictureLibrary 109

Events = Calendar = 106

Workflow Status Fields Named/Value Pairs


Not Started 0
Failed on Start 1
In Progress 2
Error Occurred 3
Canceled 4
Completed 5
Failed on Start (retrying) 6
Error Occurred (retrying) 7
Canceled 15
Approved 16
Rejected 17

Wednesday, June 10, 2009

Programmatically Upload a file from Local path to sharepoint document library [c#]

Here code is using FileUpload control to get a file from local system path.After getting this local file path ,below is code which helps to add this file to sharepoint document library.

/*Function ‘isFileExist’ use to get local file path as 'sourceFilePath' and document library path as 'targetDocumentLibraryPath' it calls function 'UploadFile' to upload sourceFile in targetDocumentLibrary.*/

public void isFileExist()
{
if(_fileUpload.HasFile)
{
string sourceFilePath = _fileUpload.PostedFile.FileName.ToString();
sourceFilePath = sourceFilePath.Replace("%20", " ");
sourceFilePath = sourceFilePath.Replace('\\', '/');
string targetDocumentLibraryPath = string.Empty;
using (SPSite osite = new SPSite(SiteURL))
{
targetDocumentLibraryPath = osite.Url + DocLibName + "/";
}
targetDocumentLibraryPath = targetDocumentLibraryPath.Replace("%20", " ");
targetDocumentLibraryPath = targetDocumentLibraryPath.Replace('\\', '/');
SPFile _File = UploadFile( _fileUpload.FileName, sourceFilePath, targetDocumentLibraryPath);
}
}

/*Function ‘UploadFile’ takes file from local system as a stream and add this stream to sharepoint document library.*/

public SPFile UploadFile(string fileName, string srcUrl, string destUrl)
{
if (!File.Exists(srcUrl))
{
throw new ArgumentException(String.Format("{0} does not exist", srcUrl), "srcUrl");
}
SPWeb site = new SPSite(destUrl).OpenWeb();
FileStream fStream = File.OpenRead(srcUrl);
byte[] contents = new byte[fStream.Length];
fStream.Read(contents, 0, (int)fStream.Length);
fStream.Close();
SPFile uploadedFile = site.Folders[destUrl].Files.Add(destUrl + fileName, contents);
return uploadedFile;
}

Tuesday, May 26, 2009

Difference between methods SPListItem.Update() and SPListItem.SystemUpdate()

There are two methods provided by SharePoint object model to update a list item.
i) Update()
ii) SystemUpdate().
Both are working fine to update a list but there is some difference between both methods. Let’s see

SPListItem.Update () : Updates the database with changes made to the list item.

SPList list = web.Lists["myList"];
SPListItem item = list.Items[0];
item["myField"] = "my value";
item.Update();


This works fine and update particular list item. Basically this is creating new version of that list item. It update ‘Modified’ and ‘Modified by’ value as well.
But in some cases where no need to create new version of list item like during migration or some where there is no need to update modified date and modified by. For that situation function ‘SystemUpdate()’ works fine.

SPListItem.SystemUpdate () : Updates the database with changes made to the list item, without effecting changes in the Modified or Modified By fields.

SPList list = web.Lists["myList"];

SPListItem item = list.Items[0];
item["myField"] = "my value";
item.SystemUpdate();

SystemUpdate method ignore changing modified date and modifier fields.
item.SystemUpdate(false);
If Argument 'false' use with this method than it tells that no new versions are expected.

Monday, May 18, 2009

Sending mail in SharePoint [c# ]

We can send mail to any where with the help of c# custom code. Below given code use setting from ‘Outgoing e-mail setting’. This is out of box functionality of SharePoint. Therefore before using this code, configure this from Central Administration.

Libraries which you have to add above the code.
using System.Net.Mail;
using Microsoft.SharePoint;

Below code shows functionality to send mail.

public void SendMail()
{
try
{
Microsoft.SharePoint.Administration.SPGlobalAdmin globAdmin = new Microsoft.SharePoint.Administration.SPGlobalAdmin();
MailMessage objEmail = new MailMessage(FromMail, ToMail,Subject,Body);
objEmail.IsBodyHtml = true;
objEmail.Priority = MailPriority.Normal;
SmtpClient smtp = new SmtpClient(globAdmin.OutboundSmtpServer);
smtp.Send(objEmail);
}
catch
{
throw;
}
}