We have a customer that is creating a .NET application and using the SDK and Windows AD user authentication with impersonation. The code they are running is below. When we run our browser and IIS on the same server, the application and interface to Laserfiche works. We seem to be having issues authenticating from IIS to Laserfiche impersonating with the AD credentials from client’s browser. And here’s the error from our first TRY Statement:
Error System.InvalidOperationException: Operation is not in progress. at Laserfiche.RepositoryAccess.Search.GetSummaryStats(Flags flags) at Laserfiche.RepositoryAccess.Search.GetSummaryStats() at Vxxxxxx.VxxxxxxDocs.grdvVDocuments_PreRender(Object sender, EventArgs e)
Try
Dim current = System.Security.Principal.WindowsIdentity.GetCurrent()
Dim clientID As WindowsIdentity = DirectCast(HttpContext.Current.User.Identity, WindowsIdentity)
Using wic = clientID.Impersonate()
' Log into Repository
Dim myRepoReg As New RepositoryRegistration(lfinfo(0), lfinfo(1))
Dim mySess As New Session()
Try
mySess.LogIn(myRepoReg)
Catch er As Exception
lblVetName.Text = "Login Error " + er.ToString
WebMsgBox.Show("Error " + er.ToString)
End Try
'Search for Vxxxxx Folder
Dim mySearch As Search = New Search(mySess)
mySearch.Command = "{LF:Name=""" & VetID & """, Type=""F""} & {LF:LOOKIN=""" & ConfigurationManager.AppSettings("LaserficheCaseFolder") & """, SUBFOLDERS=0}"
Try
mySearch.Run()
Catch er As Exception
lblVetName.Text = " Search Error " + er.ToString
WebMsgBox.Show("Error " + er.ToString)
End Try
'If Case Folder does not exist, create it
Dim searchStatistics As SearchStatistics = mySearch.GetSummaryStats()
If searchStatistics.FolderCount = 0 Then
Dim parentFolder As FolderInfo = Folder.GetFolderInfo("\\Vxxxxx Application\\Case Documents", mySess)
Dim newFolder As FolderInfo = New FolderInfo(mySess)
newFolder.Create(parentFolder, VetID, EntryNameOption.None)
newFolder.Unlock()
End If
mySearch.Close()
'Search for files in Case Folder
mySearch = New Search(mySess)
mySearch.Command = "{LF:Name=""*"", Type=""DB""} & {LF:LOOKIN=""" + ConfigurationManager.AppSettings("LaserficheCaseFolder") + "\\" + VetID + """}"
mySearch.Run()
Dim settings As SearchListingSettings = New SearchListingSettings()
Dim results As SearchResultListing = mySearch.GetResultListing(settings)
If (results.RowCount > 0) Then
For Each elr As EntryListingRow In results
Dim newRow As DataRow = dt.NewRow()
Dim entryID As Integer = CInt(elr.GetDatumAsString(2))
newRow(0) = entryID
Dim myEntry As DocumentInfo = Document.GetDocumentInfo(entryID, mySess)
If myEntry.PageCount = 0 Then
myEntry.Delete()
Else
Using myEntry
newRow(1) = myEntry.Name
Dim entryValues As FieldValueCollection = myEntry.GetFieldValues()
newRow(2) = If(entryValues("Date Received"), DBNull.Value)
newRow(3) = If(entryValues("Document Type"), DBNull.Value)
End Using
dt.Rows.Add(newRow)
End If
Next
End If
If Not mySess Is Nothing Then
mySess.LogOut()
mySess.Close()
mySess.Discard()
End If
mySess = Nothing
End Using
Catch er As Exception
lblVetName.Text = "Error " + er.ToString
WebMsgBox.Show("Error " + er.ToString)
End Try