Joy, frustration, excitement, madness, aha's, headaches, ... codito ergo sum!
This is just a test comment... ;-)
Pretty cool stuff. I helped design a "transparent prevalence" engine that sits on top and automatically builds the command objects when using a contextbound objects (might be in there now). Still, I prefer a solid relational DB, but it is fun for experimental stuff. --Jesse
Jan, Sounds like a sweet project. I myself wanted to take a look at it but there were no files to download and evaluate. Also, I know a manager @ Cox Communications who would love this. He wants to automate the builds of all of his projects. Is there anyway I could look at it. Regards Mathew Nolton email: mnolton@cybral.com
Hippo.NET, sounds like a killer tool! : Paul Gielens Blog
More about Hippo.NET : Jan Tielens' Bloggings
So would the loop variable still be valid after the loop completes, or is the variable out-of-scope outside the loop? For Each item As Customer In CustomerCollection ' Do Stuff Next Is item valid here? Also, what if the outer scope also has an item variable, like this? Would this be a compile-time error? Dim item As Integer ' Do Some Stuff For Each item As Customer In CustomerCollection ' Do Stuff Next
So would the loop variable still be valid after the loop completes, or is the variable out-of-scope outside the loop? -> The variable is out-of-scope outsite the loop. Also, what if the outer scope also has an item variable, like this? Would this be a compile-time error? -> Yes, this would result in an compile error.
Looks excellent. A minor point. In the second screenshot it says builded. It should be built.
Hi, I have created the same Macro for C# on http://www.reflectionit.nl/Macro.aspx. There are also some other macros for adding try/catch/finally blocks and using blocks. The SortCode marco might be a bit buggy. Regards, Fons
ShowUsYour-Blog!
More on VS.NET macros : Chad Osgood's Blog
Cool Macros Snipped : ShowUsYour-Blog!
Macro-economics : Jimski's Blog
I've also added some comments about this to my blog if you are interested in reading them at http://www.addressof.com.
VERY slick! That one is going in my library :)
Don't forget to add a second dataset with the column schema matching your xml elements. Then you can merge the two. AND don't forget caching the results so as not to put too big a burden on the rss server :)
I've not used the SoapExtension class before, but I have done encrypted web services with Web Service Enhancements (WSE). You can download it and read articles here: http://msdn.microsoft.com/webservices/building/wse/default.aspx It's not quite as easy as just adding encrypt:=EncryptMode.Response) to the message, but it follows the WS-Security spec and should interop with other implementations. -Dustin
When testing SoapExtension, do not use IE (because it uses the GET protocol), create a simple client in vs.net (it could be console app) and test (that will use SOAP protocol)
Jan Tielens' Bloggings
This is nothing compared to the type of completion you can get from shells like bash under linux or cygwin, but it's definitely something. I wonder why it isn't turned on by default though (remembering the key is a pain)... See ya, Dumky
You can use TweakUI to add this, and it's enabled by default in WinXP.
congrats! I'm getting married on the 18th of July. Wes
Gefeliciteerd, Jan! I married on May-30th, 2002, and I can honestly say: it's great. :) As a tip: I created a website where every guest of our wedding could upload his/her pictures. This was a big success, others could now fast and easy see other people's pictures about the wedding. If it's not too much work, I'd surely do that (make it protected with a username/password of course :))
You went from Overpelt to Brussels... guess I could attended as well.
Attributes!
Which attributes ;-) Thx Jan
Hi Jan. I'm one of the guys at Microsoft who works on the Power Toys. I wanted to let you know a little bit about the PowerToys effort. I promise that we didn't work on these projects to displace third party tools. I actually think that all of the commenting tools you mention have their plusses and minuses. And at the moment some are more polished than the one our team released. One of the motivations included giving people samples from Microsoft for extending the shell. You can never have too many samples. Another is that we just thought it would be a cool project to work on and provide a forum for other developers in the community to also work on. Actually, we’ve been in contact with the writer of the VBXC tool you mentioned and he has recently joined our workspace project on gotdotnet that allows for other people to modify the code. If your interested feel free to check out our workspaces.. http://www.gotdotnet.com/Community/MessageBoard/Thread.aspx?id=107870 Thanks, josh
A bonus of a lot of the third party tools is that they work in VS 2002 and 2003. The powertoys are just for 2003. It is opensource as you say so I do wonder how hard a 2002 port would be.
Good one!
Nice. Thanks By the way, this only works in VS 2003. In VS 2002 it chokes on ass = Reflection.Assembly.LoadFile(ref.Path) LoadFile is not a member of Assembly.
Jan, This sounds like an interesting little project. Any plans for NAnt support?
You must add at least a little more information for a quick start if you want to be able to catch peoples attention and hold it.
seems like its only for windows XP...
It was my pleasure ;-)
After running the installutil on the server it still didn't show up in the Services list. Can't the server just run as a normal program as well. It's kinda lame that I have to jump thru so many hoops just to try it out.
You should post in the MS newsgroups. It helps a lot. Start threads on forums. Add the site to google. I pimped your tool on a dutch forum (gathering.tweakers.net) in a thread about buildtools. Advertise more through simply PR. :) Look at Eric Smith. He marketed his tool this way and his tool is now one of the most well known ones. (I did the same with LLBLGen, and it works :))
Sorry Jan, I have some problems in vs.NET 2003. I keep getting a "Could not find file "" in the referenced libraries." Even with
Sorry Jan, I have some problems in vs.NET 2003. I keep getting a "Could not find file "" in the referenced libraries." Even with your own example of xmlreader. And in C# and in VB.net
Personnaly I think a service is the correct way to run the server. If the install and the uninstall work, there should not be any hoops just to try it out. Y
Hi Yves, I think you have a small problem with the selection of the Type to be found. My macro is written so that it searches for the type that is typed in front of the cursor. So you don't need to select anything. Just type the name of the type, without a space after it, and call your macro. Let me know if you have any problems, Jan Btw: I'm really looking forward to your blog!
he-he. ass.GetTypes
First of all, congratulations!! I browsed through the article and liked it, but there is one aspect of collection usage which you neglected to mention- serializability. Quite often the collections must be portable enough to be remoted or web-serviced. This type of requirement is often known in advance and should be factored in when choosing/designing data structures.
Thx Addy Thanks for your tip! The next part of the article series will cover building strong typed collections, so Serializability will certainly be mentioned. Jan
What about integration with SourceGear Vault??? We've opted for this instead of VSS...
Well, generating files for still changing projects only online does not help at all.
Great macro, however, I've made to changes. First, the namespace directive is added AFTER existing directives, and second, the macro will check first, whether the namespace is already added: Public Sub AddDirective() Dim text As TextSelection = DTE.ActiveDocument.Selection text.WordLeft(True) Dim t As Type = SearchType(text.Text) If Not t Is Nothing Then Dim keyword, suffix As String Dim line As Integer = text.AnchorPoint.Line text.Text = t.Name Select Case DTE.ActiveDocument.Language Case "CSharp" keyword = "using" suffix = ";" Case "Basic" keyword = "Imports" suffix = String.Empty Case Else Throw New System.Exception("Invalid Language: " & _ DTE.ActiveDocument.Language) End Select Dim alreadyUsed As Boolean = False text.StartOfDocument() text.WordRight(True) While text.Text.StartsWith(keyword) And Not alreadyUsed Dim startpt As EditPoint = text.BottomPoint.CreateEditPoint() Dim endpt As EditPoint = text.BottomPoint.CreateEditPoint() endpt.EndOfLine() endpt.CharLeft() If endpt.GetText(startpt) = t.Namespace Then alreadyUsed = True End If text.LineDown() text.StartOfLine() text.WordRight(True) End While If alreadyUsed Then DTE.StatusBar.Text = "Namespace " & t.Namespace & " is already imported." DTE.StatusBar.Highlight(True) text.MoveToLineAndOffset(line, 1) Else DTE.UndoContext.Open("Add Namespace Directive") text.Insert(keyword & " " & t.Namespace & suffix & vbCrLf) DTE.UndoContext.Close() DTE.StatusBar.Text = "'" & keyword & " " & t.Namespace & _ suffix & "' added to the document." DTE.StatusBar.Highlight(True) text.MoveToLineAndOffset(line + 1, 1) End If text.EndOfLine() End If End Sub
this thing doesn´t work!!!!
this thing doesn´t work
the site doesn´t work the tool doesn´t work i am frustrasted digitald0815@freenet.de
I tried it with one of my .csproj files and got: System.NullReferenceException: Object reference not set to an instance of an object. at Hippo.BuildFileBuilder.Builder.ReadProjectFile(String projectContents) in C:\Visual Studio Projects\Junk\Hippo.BuildFileBuilder\Hippo.BuildFileBuilder\Builder.vb:line 276 at Hippo.BuildFileBuilder.Builder..ctor(String projectContents) in C:\Visual Studio Projects\Junk\Hippo.BuildFileBuilder\Hippo.BuildFileBuilder\Builder.vb:line 233 at Hippo.BuildFileBuilder.Web._default.Button1_Click(Object sender, EventArgs e) in C:\Visual Studio Projects\Junk\Hippo.BuildFileBuilder\Hippo.BuildFileBuilder.Web\default.aspx.vb:line 38
Hey I live in Belgium and I blog. Just venturing into dot net. Hope to blog about it...
I thought that Belgium was barred from TechEd? Supposedly Bill Gates is getting pressure from the US DOD. Well anyway maybe they can all say they were crazy for the day and had stood down. Sort of like the Belgian King did.
Amsterdam is not in Belgium, Don ;) It's the capitol of The Netherlands, you know, windmills, wooden shoes, tulips (and legalized pot and prostitution, the Amsterdam red light district, gays can marry ) I'm happy it's gonna be close to home (I'm in the hague, 45KM's from amsterdam) :) Now I just have to save some cash to pay the entrance fee :)
Would they give free tickets to Uni students? They did for the Devdays in november...One more reason to stay in college :)
Thanks for sharing this! I'm new to .NET and this is an immense help.
If the flight was the only problem, you could just as well have gone this year. We were offering free flights to U2U clients... y
Yeah - that was circulating awhile back. I sent it to my CS professor who was quite a nut about maintainable code and style. I thought it was a lot funnier until I dealt with code that prescribed to a few of the techniques mentioned. Apparently, whoever wrote the code thought this article was not being sarcastic :)
Yup, VMWare rocks - with one caveat. You need a pretty beefy machine. I'm running vmware on a Pentiu III 1 Ghz w/ a half gig of RAM, and it's a little slow. It's a bit snappier on a faster machine, though. If you run vmware, invest in plenty of RAM, and disk space for OS images. I do a lot of release engineer / setup.exe kinda stuff, and tools like this and ghost are extremely valuable.
"Connectix is a product with the same features and is recently bought by Microsoft. I haven't tried it out, so any experiences/comparisons would be appreciated!" Jan: http://www.pcmag.com/article2/0,4149,1134339,00.asp
I had problems installing 9.1 with it. :(
I have always thought VB.NET was missing a programming syntax, on top of a few thousands other things. Glurp!
Wow, what a nice comment Stephane! It's really adding something to the discussion. Thx!
Huh. Forgot about edit and continue, how that for forgetful?? Its my single most important gripe that its not there....
ISerializable
Hi Jan. I've been a long-time fan of VMWare too, and I've been using it for all sorts of things, but recently I've converted to Connectix Virtual PC. My three main reasons are: 1) CVPC doesn't make such a big assault on your machine. There are no additional netwerk adapters that appear after you've installed it, and there are no services that run all the time, even if you're not using it. 2) It allows you to resize the screen of your virtual machines to almost any size you can drag the window to, instead of the "standard" sizes that VMWare allows. 3) On my machine, I'm pretty sure CVPC is faster than VMWare (haven't doen any measurements, it just feels snappier...) Apart from that, they're pretty much alike.
Let me the first of hopefully many to correct you both in that C# has Edit and Continue in VS.NET 2003 (which has been out for some months).
And Visual Assist.NET (http://www.wholetomato.com) adds #1, #3, #4 among many other things. I find it a must have.
Hey, I have an idea...why the fuck don't you just turn C# into VB.NET...that seems to be what you are trying for...
I've installed the current Debian distribution on VMware 4. No problems so far.
Since I am a C# developer with C++ background, please let C# case sensitive! Regarding the With statement, it's hard to convert VB.NET samples to C# because of the missing WithEvents statement.
Hi, i'm trying to implement the same thing but it still doesn't work !!! When there is only the remoting "concept" everything is fine but when I introduced events nothing works anymore !!!! Furthermore, the client application have to be in the same directory as the server... Can somebody help me ? Thanks
It would be nice to have: 1. the build requester in the build loggings. (windows account on client?) 2. A possibility to copy the directory with the dll's from the server to the clients from within Hippo. 3. Does the path has to be set on the server. This requires rebooting of the server. (for the system account in the service to get it) Can it be done in the config file? 4. some errors result in a crash of the client programm. (servfer down) 5. The error you get when the path to nant isnt set on the server could be better. Thanks.
Which reminds me of Joe Reich's tip: http://www.cyphersolutions.com/joe.reich/downloads/tip.jpg
C# is also missing a background compiler, which helps greatly with IntelliSense. VB.NET is missing operator overloading. C# is missing a simple mechanism for late binding. VB.NET is missing unsigned types. C# is missing optional arguments. VB.NET is missing unsafe code. The list goes on and on. And to clarify a previous post, VS 2003 does NOT provide Edit and Continue for VB.NET or C#.
Request: It would be nice if you could update the server code from the client without requesting a build. (You also can do a "get latest version" on the server, but there are no working folders set.) Automatically creating a buildfile for the project and the possibility to manage the main buildfile (add project, move project in buildsequence, comment project, ...) would be nice options. Very minor issues: If you start the Hippo client with a shortcut, and the windowstate is minimized, you regulary get errormessages but everything works. The Hippo buildfile builder (beta version!) always sets references to c:\Windows somtimes this is winnt. I do not think this can be changed in the website. But who knows, maybe sometimes in the client?
The download for 1.2.0 of hippo.net doesn't contain a hippo.server.exe.config file. Is there one available somewhere else? Thanks, Eric
I extracted the files to C:\Hippo, went to C:\Hippo\Server and typed: installutil hippo.server.exe and got the following error: C:\Hippo\Server>installutil Hippo.Server.exe Error dispatching command/test named 'Hippo.Server.exe' Here is the list of valid command/test/option names: +------------------------------------------------- | registerdatapath | registersqlanywherepath | registersqlanywherebinpath | getdatapath | getsqlanywherepath | getsqlanywherebinpath | registersqlanywhereodbcdriver | registeroracleoptions | getoracleoptions | validateschemarepovendorinfo | validateuservendorinfo | validatedbisempty | describelastinstalledschemarepo | initemptyschemarepo | relocateschemarepo | relocateuserdb | convertuserdb | convertschemarepo | copyuserdb | copyschemarepo | clientregisterschemarepo | registerschemarepofromfile | adddbset | dropdbset | renamedbset | copydbset | disconnectuserdb | reconnectuserdb | exportschemarepo | exportoldschemarepo | importschemarepo | exportschemafromuserdb | upgradeschemareposystemversion | upgradeuserdbsystemversion | unlockschemarepo | unlockuserdb | catchuptestdbs | cloneschema | deleteschema | purgedeleteduserdb | restoreuserdbschema | clearstatemachine | setschemarestriction | setrecursionlimit | dropchoicelist | checkin | uncheckout +------------------------------------------------- I'm guessing this is because the download doesn't include a hippo.exe.config file.
Bored??? on your honeymoon??? You are a true geek ;)
Congratulations on the wedding! And Roy's right - leave the books at home. If you're bored, that's sad :)
Which time zone are you in...? It's still July here in the UK. 8-)
http://erablog.net/filters/16633.post
Jan, I actually found your Blog site from reading your article. Yep, like the summary of Collections alot. Explained the difference better than reading 5 times that in a book or working it out for myself reading the .NET reference. thanks, Adam
Definately a cool feature that we need for our projects but sadly not yet integrated with the VSS piece. Any plans to release a beta version packaged together in the near future? The big win of course is that the nANT script is always in sycnch with your project. What about being able to generate a script for multiple projects within a solution, any plans there? This is something we could definately use right now and as long as its fairly solid we'd be willing to demo it and give you feedback. keep up the good work, Scott
Agree fully with Scott. Will the buildfile builder be able to handle multiple project files in a solution? has the object reference bug been fixed yet? If that is this the case it could be very useful tool for our project.
My solution to this when I first ran into it was to write a quick article about it on my ASPAlliance column. You'll note that my first articles at http://aspalliance.com/stevesmith/articles/ are REALLY basic ASP stuff. This is because I was a consultant learning and bouncing around between client locations, so this provided me with a central repository for such snippets that I wanted in my virtual toolbox, and had side benefits of helping others and providing me with great exposure. You might use the articles feature here, your own site, or sign up to become an ASPAlliance columnist and get free space there plus a lot of exposure in the community. Steve
When will the buildfile generator be implemented in Hippo? I would like to try to push my company to using this, but since our project files change frequently, it is not an option to update the buildfile using the leadit website. If it's not going to be included anytime soon, is there a command line generator or are the classes available in cvs to do this?
Most of what I have seen requires a desktop app that uses a web service to get updates. http://www.vb2themax.com/codebox http://www.fmsinc.com/dotnet/SourceBook http://www.artifactsoftware.com http://www.artifactnetwork.com
Is there a .Net1.0 build of HippNet?
http://dotnet.4all.cc/ freeware :>
Imports EnvDTE Imports System Imports System.Collections Imports System.Diagnostics Imports System.Reflection Imports System.IO Public Module TypeFinder Private Class TypeCache Public Shared Cache As Hashtable = New Hashtable() End Class Private Function SearchTypeInAssembly(ByVal typename As String, ByVal ass As Reflection.Assembly) As Type DTE.StatusBar.Text = "Searching for '" & typename & "' " & ass.GetName.Name & "..." If (Not TypeCache.Cache.ContainsKey(typename)) Then Dim t As Type For Each t In ass.GetTypes If t.Name.ToLower = typename Then TypeCache.Cache.Add(typename, t) Return t End If Next Else Return TypeCache.Cache.Item(typename) End If End Function Private Function SearchType(ByVal typename As String) As Type typename = typename.ToLower.Trim.Replace(";", "").Replace(".", "") Dim ass As [Assembly] Dim currentAss As String Dim currentPath As String Dim t As Type Dim p As [Property] 'search in principal assembly ass = Reflection.Assembly.LoadWithPartialName("mscorlib") t = SearchTypeInAssembly(typename, ass) If Not t Is Nothing Then Return t 'search in assemblies in solutions Dim proj As Project For Each proj In DTE.ActiveSolutionProjects 'search in references of current project Dim ref As VSLangProj.Reference For Each ref In proj.Object.References ass = Reflection.Assembly.LoadFrom(ref.Path) t = SearchTypeInAssembly(typename, ass) If Not t Is Nothing Then Return t Next currentAss = "" currentPath = "" 'obtain properties to get assembly associated with project For Each p In proj.Properties If (p.Name = "OutputFileName") Then currentAss = p.Value ElseIf (p.Name = "LocalPath") Then currentPath = p.Value End If If currentAss.Length > 0 And currentPath.Length > 0 Then Exit For Next 'search in the assembly associated with the project currentAss = currentPath + "bin\" + DTE.Solution.SolutionBuild.ActiveConfiguration.Name + "\" + currentAss Dim tempAss As String = currentAss + "2" Try Try If (File.Exists(tempAss)) Then File.Delete(tempAss) End If Catch End Try 'we copy de assembly to be sure that when the compilation will be launch the file could be written File.Copy(currentAss, tempAss) ass = Reflection.Assembly.LoadFrom(tempAss) t = SearchTypeInAssembly(typename, ass) Try File.Delete(tempAss) Catch End Try If Not t Is Nothing Then Return t End Try Next DTE.StatusBar.Text = "Could not find type '" & typename & "' in the referenced libraries. Make sure your cursor is right behind the text or selected!" DTE.StatusBar.Highlight(True) Return Nothing End Function Public Sub AddNamespace() Dim text As TextSelection = DTE.ActiveDocument.Selection If (text.Text.Length = 0) Then text.WordLeft(True) Dim t As Type = SearchType(text.Text) If Not t Is Nothing Then text.Text = t.FullName text.EndOfLine() DTE.StatusBar.Text = "Ready" End If End Sub Public Sub AddDirective() Dim text As TextSelection = DTE.ActiveDocument.Selection If (text.Text.Length = 0) Then text.WordLeft(True) Dim t As Type = SearchType(text.Text) If Not t Is Nothing Then Dim keyword, suffix As String Dim line As Integer = text.AnchorPoint.Line text.Text = t.Name Select Case DTE.ActiveDocument.Language Case "CSharp" keyword = "using" suffix = ";" Case "Basic" keyword = "Imports" suffix = String.Empty Case Else Throw New System.Exception("Invalid Language: " & DTE.ActiveDocument.Language) End Select Dim alreadyUsed As Boolean = False text.StartOfDocument() 'Skip the headers text.WordRight(True, 2) While text.Text.StartsWith("/*") Or text.Text.StartsWith(" *") Or text.Text.StartsWith("//") text.LineDown() text.StartOfLine() text.WordRight(True, 2) End While text.StartOfLine() text.WordRight(True) Dim lineTarget As Integer = text.AnchorPoint.Line Dim correctPlace As Boolean = False While text.Text.StartsWith(keyword) And Not alreadyUsed And Not correctPlace Dim startpt As EditPoint = text.BottomPoint.CreateEditPoint() Dim endpt As EditPoint = text.BottomPoint.CreateEditPoint() endpt.EndOfLine() endpt.CharLeft() Dim currentText As String = endpt.GetText(startpt) If currentText = t.Namespace Then alreadyUsed = True ElseIf (currentText < t.Namespace) Then text.LineDown() text.StartOfLine() text.WordRight(True) Else correctPlace = True lineTarget = text.AnchorPoint.Line End If End While If alreadyUsed Then DTE.StatusBar.Text = "Namespace " & t.Namespace & " is already imported." DTE.StatusBar.Highlight(True) text.MoveToLineAndOffset(line, 1) Else If (correctPlace) Then text.GotoLine(lineTarget) DTE.UndoContext.Open("Add Namespace Directive") text.Insert(keyword & " " & t.Namespace & suffix & vbCrLf) DTE.UndoContext.Close() DTE.StatusBar.Text = "'" & keyword & " " & t.Namespace & suffix & "' added to the document." DTE.StatusBar.Highlight(True) text.MoveToLineAndOffset(line + 1, 1) End If text.EndOfLine() End If End Sub End Module
Nifty and useful especially for middle & backend people (like myself) when they need to design a colorful presentation. Cool!
Thanks for the credits :-) However, I did some more customization some time ago. I will compare it to your new version and maybe suggest some more improvements ;-) Regards, Thomas
Really good macro...I don't know how easy it will be, but is there any way to have it look up namespaces in the same assembly - so, say for instance you defined a struct in say MyProject.Structs and in MyProject.Classes.Test you're typing away and want to use one of the structs in MyProject.Structs, it'd be very useful if the macro could look in there too (or am I missing something and it already does it??)
Umm...ignore me, I see it already tries that...however for me at least (using VS.NET 2003) it fails - seems to get stuck in a specific Assembly and get nowhere else so doesn't find the correct NameSpace
Hi Jan, Other enhancements I have added in my version is to wrap the process in an Undo context, so a single undo will change everything back. simply add this before your changes: Dim CloseUndoContext As Boolean = False If DTE.UndoContext.IsOpen = False Then CloseUndoContext = True DTE.UndoContext.Open("TypeFinderAddDirectiveMacro", False) End If and add this after your changes: If CloseUndoContext Then DTE.UndoContext.Close() Another change I made was to check for the "Option" statement (VB only) and make sure the Imports statement was after that. With the changes that now check for existing namespaces that might not be needed, but worth looking into. Keep up the great work.
From a performance standpoint, your conclusion misses the mark IMHO. Client-side validation is simply not minimal nor trivial. Sure, business logic tiers can do the most sophisticated validation possible and each tier should be responsible for complete error and validation checks. Sure, point by point everything you say before your conclusion is dead on. But to conclude with the phrase "...some minimal trivial validation at the client side..." is to completely miss the consideration every good developer can never forget: performance. A much better way to conclude this excellent post is "... as much validation as the client side can handle...".
Dave You are completely right! I maybe did not speak about performance. But I do think not all validation can be or should be on the client. I'll make some adjustments to my conclusion. Thanks for your reaction!
Especially in a SOA, you'll need some sort of client-side validation. Validate the message against an XSD for example before sending it to the server. If you're using Enterprise Services or Remoting and your entity objects are [Serializable] .NET objects, then you can also work alongside the metadata level by defining some new custom attributes, like public interface IValidatable { // empty. This is just a marker. } [Serializable] public class Customer, IValidatable { [MaxLength(30), NonNull] public String Name; [MaxLenght(35), NonNull] public String Firstname; [NonNull, RegExp("...")] public String SSN; ... } You can then generate a generic routine public ValidationResult Validate(IValidatable obj) { ... } this routine would check for all fields/properties and their custom attributes. It would then extract the current values of these fields and compare them to the definitions. The ValidationResult object works like a collection which contains as many validation errors as found. That is, if FirstName == null and SSN doesn't match the regexp, then ValidationErrors would contain two entries pointing to the FieldDefinition object and to the validation rule which failed. These single ValidationError objects will also contain an human readable message. The ValidationResult would also include some generic Enum value which specifies "Ok", "MightBeOk", "IsNotOk" or whatever ;-) The cool thing is that you can develop different validation routines for server and client while essentially reusing most of the logic. And you can generate some nice documentation by using Reflect - this documentation would then also include all your validation rules. Just an idea, though ... -Ingo
Oh ... you can make it even more flexible if the new custom attributes (like the NonNullAttribute) contain the logic to check the current values. let's say: public class ValidationAttribute: Attribute { public abstract ValidationError Validate(object currentvalue, string fieldname); } public class NonNullAttribute: Attribute { public override ValidationError Validate(object currentvalue, string fieldname) { if (currentValue == null) { return new ValidationError(fieldname + " should not exactly be null."); } return null; } } The generic Validate(IValidatable obj)-method would then in fact first iterate over all existing fields and properties, then iterate over each custom attribute of the given field/property, checks if the attribute derives from ValidationAttribute, and calls Validate() on each attribute, passing the current value and the field name into it. -Ingo
I would turn this upside-down. Given the current platform, by default full validation should be implemented both client-side AND service-side. Of course deviations form this scenario do apply, but each one should be a consious descision. Unless we can build a Palladium style trusted distributed computing environment, there can be no exceptions to full validation on the service-side. You can not trust your clients integrity. Client side there can be lots of reasons to skip full validation, as various trade-offs apply, but the principle should remain: "full validation unless ...".
I am speaking off the top of my head here and this was awhile back... I vaguely remember some issue I was dealing with then the browser didn't support JScript for whatever reason and thus client-side validators weren't rendered out. I assumed, incorrectly, that the validation would automatically be pushed to the server. If I recall correctly, the server-side validation is only done with an explicit call. So, as long as my memory isn't playing tricks on me, that's one more reason why client-side validation shouldn't have too much weight put on it. I think you summed it up nicely - "as much validation as possible on the client-side". It's best for perceived performance to the user and scalability by distributing the (arguably minimal) cost of validation to the client. But, you still shouldn't trust that necessarily. Remember, it's also possible for me to post a malicious HTTP request to the page w/o using your form at all. Your client-side validation doesn't help much there!
For End-2-End .Net apps I tend to put validation code (not strictly business rules) in a DLL and I use that DLL both on the client and on the server. On the server I also check all the business rules. For other client technologies I tend to implement some validation, it depends on the technology and on the time that I have.
Jan, for the record I totally agreed with everything you posted up to the conclusion. I just thought a few adjectives in that conclusion changed the entire meaning of it. Thanks for understanding what I was saying! As for the need for server-side validation, I agree with all thoughts presented here. Tim... yes, malicious HTTP requests must be blocked on the server end. Jan... client-side validatation most certainly doesn't lessen the need for server-side too. Truth is, every single piece of n-tier development should have all validation and error-checking possible. The objective at each tier may be quite different, but the reasoning behind it isn't. Client-side should always be trying to minimize traffic over the wire. Business-side should always be concerned with logic integrity. Database-side should always be concerned with security. Obviously there's more concerns too... data types, invalid keys, transaction rollbacks, even keeping state of what IS valid.
Dave sums it up nicely... so, who are you and do you have a weblog? :) (I'd like to subscribe)
Nope. I believe I'm becoming well-known around these parts since I do NOT have a weblog yet comment! :P I almost started one once but realized I lacked the discipline to post regularly, plus the focus to speak consistantly. Um, I lurk loudly instead!
This is an interesting topic. (Jan,I actually came to your blog to ask you a few offline questions about hippo.net which i will submit to you seperately ). But back to validation. I am currently in the process of creating a Web services framework where I am consulting (a large cable company in the southeast). We are going over security, exception handling, configuration and last but not least validators. Ingo, i was actually approaching the solution in a very similar manner to what you described; however, I was looking hard at creating a base business entity class (for all of my business objects ) that is derived from ContextBoundObject. The advantage of using ContextBoundObject is that I can create attributes (much like you describe, but they implement IContextAttribute). I can then decorate my properties and methods with these attributes. The key thing about ContextBoundObject is that it enables me to intercept the calls to the assignment of a property or method parameter and evualuate the assignment based on my custom attributes. I can then throw an error if they fail validation. What are your thoughts on this everyone? Has anyone done much with this? Mathew Nolton
Jan, I was going through the installation of hippo.net and I noticed a couple of things: 1) Your readme talks about a config file for your server but the zip file does not have one. 2) When I start up the client I get the error Requested Service not found (its probably a configuration issue?). I traced it to the line of code in main.vb If Me.GetRemoteControl.Notifications.Length > 0 Then Any thoughts. email me directly at mnolton@cybral.com Mathew Nolton
Oh man. What a neat macro. (All four) thumbs up.
vb project file has ..\WINNT in the path. Visual studio translates this when different users open the project (i.e. WinXP , Win2k). The buildfile generator uses the ..\WINNT verbatim, instead of checking if it shouls use ..\Winnt or ..\Windows. maybe should use the System.Environment Static properties?
I am having the same issues as Scott... this macro just hangs for me saying it's searching assembly xyz. Cool idea though.
The service had problems accessing a VSS store on a network drive. I had to download the source and copy the code from the service into a form. Once it was running under my username it worked fine. If you have more than one project defined, you should be able to view them all from one client, instead of having to change the Hippo.Client.exe.config file to point to a different project name every time. You should also be able to change the configuration from the client (change the VSS path, username, client directory, etc.)
Sorry Jan.. I think this is a bit premature!
:-( Will Michiel come and talk about something else?
Testing...
The joke is quite funny but worth thinking.
Agree with Adam, It would be really useful if more than one project can run in the client without having to change the config file. Have you any planst to implement this? Bert-Jan
Can only mean good things for Mono, not sure the reporting of 'Mono as a "Linux/Unix" port of Microsofts .NET web services platform' :) .NET does more than web services and Mono runs on more than Linux/Unix :)
Thanks for sharing the information Jan. :)
This is excellent news, there go my savings ;)
Jan, ik wou vanmorgen je artikel "Exposing custom-made classes through a Webservice ..." lezen maar het lijkt verplaatst te zijn. De huidige link is : http://www.codeproject.com/vb/net/leaditwebservicewrapper.asp Met vriendelijke groeten.
Thx!
wow! good posting... I'll have to print this one out (& scratch head)... Ques: any thoughts on exception (error) handling) on this one?
I've come to love the power and flexibility that CodeDom/Reflection.Emit and Reflection can provide as well!
Error handling should be implemented (in my opinion) at, at least, 2 places: 1) When invoking the GetValue method: return (string)getValueMethod.Invoke( tempClassInstance,new object[] {this}); 2) After compilation: CompilerResults results = compiler.CompileAssemblyFromDom(compilerParams, unit); When there are compilation errors, no exceptions are thrown. But you need the results.Errors collection to check if everything went ok. Jan
This is an inefficient way to do this (IL and emit would be far better). However, you need to keep in mind that there is currently no way to unload an automatically generated class from the app domain, so if actually utilize this customization, you are eventually going to run out of memory if you create enough customer objects, regardless of whether they have been garbage collected. Of course, the proper way to do something like this would be to implement a custom format provider or just use String.Format when you were actually making use of the data (probably the best option)... It makes a lot more sense that way anyway and will result in much cleaner code that is easier to manage. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconformattingoverview.asp
Jesse Ofcourse the example I showed is quite trival and is only for illustrating how the CodeDom and Reflection can be used. Altough I aggree with your statements, I think that there are limitations with implementing custom format providers. If my sample would be used in real life, the _toString would not be a property of each Customer instance, but it should be in a config. file or something like that, so only a very limited number of assemblies would be compiled in memory. Thanks for your thoughts! Jan
Can you debug the Emitted IL? I guess you can debug it as IL, but that's not what I'd consider exactly convenient, versus debugging C# code. Also, can't you achieve pretty much the same flexibility with regular OO programming and good use of patterns?
I love Skype! I gotta add one of those to my blog.
What about the adware/spyware that Skype could be installing? Their license states that you give them and 3rd parties the right to install unrelated software on your machine without asking you first.
My pleasure...
I think this is a great tool! I was going to manually run source safe batch commands and then run nAnt when my co-worker found this tool (I had found Drago.NET at about the same time). This tool will let each developer run builds on the integrated testing server once they have checked in the code to sourcesafe without having to give them remote/telnet access to the server. A couple of suggestions. The VSS database and login/password should be passed from the client. This would be more flexible and secure. Currently, once someone has access to the port, they can get into the VSS db since all the credentials are on the server. Another suggestion is to support multiple projects. If I have time, I might try and implement these myself. If I am successfull, I'll send you the changes. There are some installation issues, but these have be previously documented and I was able to find the solutions in the forum.
Correction. My last post should say Draco.NET, not Drago.NET
It's very geeky - just beware of the dangers of recursive self-quotations in a stack-based world ;)
Clements Vaster of Newtelligence has already implemented this kind of attribute based validation more than a year ago in their SDK. They call it constraints and have implemented 20 constraints. (with sourcecode) http://staff.newtelligence.net/clemensv/CategoryView.aspx?category=Talks%7CTechEd%20Malaysia
Yes, I'm aware of that! Many examples of the technique that I showed are available on the net. I just used the validation example to illustrate the use of attributes (which was the goal of this article). So I do not want to pretend I "invented" the technique, I just used it to explain attributes.
Sure I did implement this already, but I didn't write an MSDN article. ;)
I have installed Mandrake9.1 and added the line "MII_NOT_SUPPORTED=yes" but the only problem is that I can not find the PC/Net 32 network driver. It is not in the list during install. With the line added, I can get an IP adress but can't go on internet. Is this the driver? or am I doing something elese wrong? thanks, Jerom
I think they goofed.... not there now.
I hope you're watching those MSDN TV videos while *being driven* to work, and not while *driving* to work, Jan ? :-)
Patrick, ofcourse I only listen to them while driving (I do not have a personal driver, but I do know some other Belgian .NET guys who sometimes have one!). But since almost all of the Belgian traffic is standing still most of the time, watching MSDN TV would be possible too! :-) CU Jan
Dewayne Mikkelson and his Radio WebDog, Shadow
good one :)
Good one, if I remember I too saw the same one years back in SAD classes ; )
Funny but true!
Everyone in my office has been cracking up all morning thanks to this! Does anybody have any good spots to pick up more of this type of humor?
very good comic :) So true :)
That's a classic - it's been around for decades and still rings true!
I bought a PCMCIA hard disk for storing even more on my PocktPC... (5GB - 200 €)
5GB! Thats huge... I'm still praying MS will make the webcasts available for Pocket PC. Enjoy the PDC! Jan
great!
Belgian .NET guy with a driver... What a snob. :) Anyway, no more driver for me. Plaster was removed last Monday for my trip to LA. Should have thought about saving some webcasts to my notebook's HD. Then I could view them on the plane...
Have you been spying on our company meetings?
Excellent news ! If only the registration form could work ... well i guess it'll be fixed soon. See you there Jan :)
Is there a target release for integrating the buildfile builder into the build tool?
No there is no date set yet. There are still some issues that need to be solved (e.g. Webservice projects deployment). The best we can do at this point making a suggestion for a build file. Jan
I agree here. I have a 45 minute drive to work and then back home and listen to the .Net Rocks audio and even the .Net Show on my iPaq while driving. It is the only time I would get to listen to the Webcasts. They are very informative. Dave
Jan, I'm with you on that point. It would be nice to have available in download as well. I was a bit disappointed by LiveMeeting, of course it doesn't affect the quality of the webcast but some essential features are missing. Ben
Hippo.NET build is not working correctly. Problems with parsing or reflection.
Can you please post the exact error message and when it occurs on the Source Forge forums (http://sourceforge.net/forum/?group_id=77681) ? Thx Jan
Anyone get this to work? I've tried installing it through VMWare and on a standalone machine. When booting from the disc, it fails, and when trying from within a windows installation the setup screen just sits there for about 10-15 min and then closes.
i wish people in our company would listen to ideas
What? No seatbelt? OSHA will never approve it. :)
It's funny ... but the old one I have from Bell was particularly tuned to the reality that Operations will do their damnest to make anything work. Your "How the Project leader understood it" is what the engineers (or programmers) build, and your "How the Analyst designed it" is what Operations installed. Come on, you have to admit that Operations will try to make it (sorta) work, right? ;-)
This was true for my entire career in the Royal Navy and will still be relevant for years to come!
Can you tell me where I can buy the blueprints for one of these wonderful things?
Beautiful. We need to superimpose the end user in the "How the Analyst designed it" and "How the Programmer wrote it" frames. And how about a frame for "How Senior Management changed the Analyst's design". That could involve placing stocks (i.e. a device consisting of a heavy timber frame with holes for confining the ankles and wrists) on the swing.
Sounds like ALL government sponsored IT projects!!!
This is fairly old. It was originally drawn up with a construction motif....How the architect designed it, etc.....
Ya.........
I'll try to fix my installation with the advice above, I have to admit that setting the network connection on Mandrake 9.1 under VMWare is an assault on the nervous system of a newbie like me.
Ard core never dies.
I Love greg
I love Ben
Hey, Omendata, how did you know that. Now we have to shoot you! I guess we'll have to shoot everyone who read that too. I guess I'll have to start up a project to waste that many people. Let's see, how will I describe this to the project manager...
Yah, some things don't change
Ok, Question... We have been using VPCs here at my company for testing and such, but are having issues trying to log them into the local domain. We have searched all over the web and can't find any posts about anyone else having trouble using the Virtual Switch functionality. You see, our issue is this. We want to set up a VPC with Server 2003 and be able to access it from anywhere on our lan. Well, if we use NAT and try to ping the box we get a response from the Host box and not the VPC box. If we try to use Virtual Switch we can't even get the VPC to obtain its own IP using DHCP. We have tried this on numerous different Host PCs and still the same results. It doesn't even matter what OS the VPC is running, the only way we can get a network connection is using the NAT configuration and of course this will not work if were trying to run the VPC as a 2003 Web Server. This is also the case at my house in my network set up at home. Any ideas? Has anyone else had these issues with VPC? Other than that, the product is awesome!
VPC has had no problems on my machine obtaining an IP from DHCP. Maybe an ipconfig /renew might help? Just grasping at straws...
Well it's quite possible our issue is that we are using 5.2 the Connectix product and not the recently released MS version 2004. We are going to download the 2004 version, and I will keep you all updated.
Nice Tip Jan!
Since you are looking at that, maybe you'd be interested in my own IBuySpy portal modification. I created it mostly because i felt that these portals lacked customization. My portal is almost completely CSS based regarding it's looks! A lot of work still to be done, but you can take a look at it at my website, http://www.stebet.com
You could improve a little bit your stylesheet by specifying directly at the <xsl:for-each> level, that you want to loop on the first 5 items : <xsl:for-each select="channel/item[position() <= 5]"> ... </xsl:for-each> No more need for a nested <xsl:if> ! Hope this helps !
And here's another variant. This one displays all the titles, but only the description for the first title. On all the other titles the description is shown on mouseover. René <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:output method="html" indent="yes"/> <xsl:template match="rss"> <!--Get max 25 articles --> <xsl:for-each select="channel/item[position() <= 25]"> <!-- Build compete A element --> <a> <xsl:attribute name="href"><xsl:value-of select="link"/></xsl:attribute> <xsl:attribute name="target">_blank</xsl:attribute> <xsl:attribute name="title"><xsl:value-of select="description"/></xsl:attribute> <xsl:value-of select="title"/> </a> <br/> <xsl:if test="position() = 1"> <xsl:value-of select="description" disable-output-escaping="yes"/> <br/><br/> </xsl:if> </xsl:for-each> <!-- Show feed description at the bottom --> <br/> <xsl:value-of select="/rss/channel/description"/> <br/> </xsl:template> </xsl:stylesheet>
I noted a similar concern to the ASP.NET team last year when I first saw Whidbey. They are doing lots of good things, but it looks like they are working somewhat in isolation. I never heard back by the way. :)
One thing I'm really curious is how Constraints (at least I think that's what they're called) work in VB.Net?
class declaration should be: public class MyCollection<itemType>:System.Collections.CollectionBase right?
That's right, seems the some tags are left out because of the HTML. Sorry for that. Jan
Jan: Until MS implements your suggestion, you may be interested in WM Recorder: http://www.wmrecorder.com/
It is universal - I first saw a predescessor of this version posted on a wall in a batch terminal room(think punch cards...IBM 360/370) about 1972, in the Waterloo University computer building. It was funny and true then. Communications between (even more) specialists seems to have gotten even more complicated over the years.
I love goats!
But how to do that by configuration file? I tried again and again, the configuration file can't work. the config file is as: <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.runtime.remoting> <application> <service> <wellknown mode = "SingleCall" type = "Etone.RegistBiz.RegistTx,RegistBiz" objectUri = "RegistTrans" /> <wellknown mode = "Singleton" type = "Etone.RegistBiz.RegistQry,RegistBiz" objectUri = "RegistQuery" /> </service> <channels> <channel ref="tcp" port="9000" /> <serverProviders> <formatter ref="binary" typeFilterLevel="Full" /> </serverProviders> </channels> </application> </system.runtime.remoting> </configuration> and how can we do that in IIS hosting? Neither program in Global.asax nor configuration file can do that. I am so sad, could you test it and help me?
cool
I like that you are adding new features, though getting binaries isn't high on my list. I would rather see some bug fixes, please. Do you monitor the sourceforge bug list feature? Or forums provided by sourceforge? They are very quiet. :)
Jan, It is very useful samples. Where did you find syntax for it? I am struggling through converting C# sytnax of Generics to VB.NET. Thanks, Maxim
Hi Maxim The C# syntax I found on the net (e.g. from the MSDN site), but the VB.NET syntax I had to "discover" myself. If you have problems, let me know and I'll see if I can help you out! Jan
Actually, the syntax for multiple constraints will be changing, the one in the PDC build was just a preliminary syntax. The new syntax will look more like "Class MyCollection(Of T As {Entity, IComparable})". I really need to get to blogging about this... :-)
Hi Paul, thanks for the information!
Jan, Thanks for the refernce to the article. It does contains wealth of information. Maxim
Paul, I think you should give us some good sample code on this topic. I think It is one of the great feature we are going to have with new release. By the way new syntax looks confusing {} do not really makes sense for VB developers
Sorry I spilled the beans Jan :-). I didn't know juu were just setting this up...
No problem Patrick! Every IT projects need a thight deadline. ;-) cu
yea, this is really really sad, this is the kind of thing that makes me want to ditch .net altogether. I have been struggling for this for a week. EVerything is fine until i try to add events, then nothing works. Does anyone have a SHIM class example in vb.net ??
can you give mo details
What kind of details are you looking for??
Sorry, but I try your solution and it doesn´t work. Do you know what can be happening? My code is: public __gc class MyCertificateValidation : public ICertificatePolicy { public: bool CheckValidationResult(ServicePoint* , X509Certificate* , WebRequest* request, int problem) { return true; }; }; System::Net::ServicePointManager::CertificatePolicy = new MyCertificateValidation(); HttpWebRequest* wrq = static_cast<HttpWebRequest*> (WebRequest::Create(url)); HttpWebResponse* hwr = static_cast<HttpWebResponse*>(wrq->GetResponse()); Stream* strm = hwr->GetResponseStream(); FileStream* fs = new FileStream(fpath,FileMode::Create,FileAccess::Write); BinaryWriter* br = new BinaryWriter(fs); int b; while((b=strm->ReadByte()) != -1) { br->Write(Convert::ToByte(b)); } br->Close(); strm->Close();
Hello Jan, The http://blogs.leadit.be/feeds/befeed.aspx page currently takes too long too load (+- 20 seconds). Do you already use caching for the RSS data?
I am very new at ASP.NET this look as if its what I need to complete my assignment. But I dont know how to trigger it below is my problem. My purpose is to dynamically change all the text description on all the objects and all the DIM that contain Error messages by read a DB table to determine the language by user name and then read a DB table by ASP page and language to get all the objects that needs to be changes. Can I email you my code?
Wow, that's a nice piece of work. Thanks so much!!
Thank you!!
Hi, Your blog contains good info. Keep it up.
ok, since all the help files are in chinese traditional, i'll ask this installation question here-- does CodeLibrary install its own access db engine or does it require something already present on my machine? thanks!
Jan, Did you try modifying stuff that comes out-of-the-box? When I played around with it, I had several things I didn't like: - I couldn't just modify the look of any page I wanted - I often found it hard to find out where I should look for certain things - Once I found out how to create a page with a certain template, I saw it indeed did use the template, but it still contained certain things like the stuff at the top and left. - The template of that page I added couldn't be changed anymore with the webinterface once it was added. Perhaps I tried to use it for the wrong thing: instead of using it as some 'document sharing tool', I wanted to see if I could use it as a base for building webapplications. From my experiences, I came to the conclusion that I shouldn't want to do such a thing. That's why I started with our own tool, which comes has the cool things in SharePoint, but not with the limitations I experienced.
Also Just some FYI, you might not want to put your assembly into the GAC since it would give it FullAccess rights. To have a bit more security you can just install it into the bin directory where sharepoint is installed (usually c:\inetpub\wwwroot\bin). Jeff
No offense, but first life will be great because you can do a lot, out of the box. Then you start that life will be even more great when you... and then A LOT of things come up you only can do with access to the server. I think that still kinda sucks! :)
Considering deployment: You might want to have a go at the Microsoft WPPackaging tool. Get it from http://msdn.microsoft.com/library/default.asp?url=/downloads/list/sharepoint.asp. Should save you a lot of tedious work! Jorg
Hello, my name es David and now I'm studing the SoapExtension. I have a problem and I don´t found the solution. I do a client application that call a webservice. In my webservice I have a class that inherit of SoapExtension and save all the message that my web service receive. The problem is that never execute this class, and I have the correct configuration in a web.config file. (I use Visual basic.net) Where is my fault? There are another option. Thanks for all David
Jan, all the best wishes to you too ! And don't forget, you can help making 2004 an exciting year by giving us more of these great articles of yours... Greetz, Faan
At this point I still don't have any MS reaction... :-(
After HOURS of trying to find a solution to the limiting the number of headlines, there you have it in two lines of code. THANK YOU!
And what about having the possibility to post to WSE Web Service?
Hi Laurant, what do you mean by WSE Web Service? DIME attachements, encryption, security, ... ? Jan
And what about being able to submit rich text to for example a webservice? Last time checked I noticed it sends an XmlNode to the webservice. On the webservice however I could only get a certain bit of the text - if I would submit "hello <b>there</b>", I would only be able to get "hello", as if the rest was never sent. I think there was a workaround for this by doing some scripting. It would be nice however if this kind of trivial stuff would be easier.
> it's a pity that you cannot use > managed code in InfoPath. Jan: You can! http://www.hands-on-labs.com/only4gurus/techlib/pdc/TLS351.ppt http://www.microsoft.com/downloads/details.aspx?familyid=351f0616-93aa-4fe8-9238-d702f1bfbab4&displaylang=en
Yes Jan I mean exactly that!
Thanks Phil for the pointer, I did not realized that there were a project toolkit for Visual Studio. I did use the Word toolkit to build the article publishing on my site but did not know that there were one for InfoPath. Thanks !!!
Phil I don't think the InfoPath Project Toolkit for VS.NET is already available. Please correct me if I'm wrong!
Right :-( They talk about it in the ppt presentation, but I could not find anywhere !
It looks great, i already added your fead to bloglines :) Curious to see future releases :p
very cool - keep it up...
Looks cool! I'll certainly use it whenever possible.
Is that really the SQL code that ObjectSpaces generates? This code doesn't seem like it would work in SQL Server 2000: Declare @r int, @e int; Set @r=@@ROWCOUNT; Set @e=@@ERROR; If @e = 0 Begin if @r = 0 RAISERROR(''No rows effected'',16,1); If @r > 1 RAISERROR(''Change effected %d rows'',16,1,@r); End You need to set @r and @e in the same SELECT statement. Unfortunately, even a SET will reset those values.
What product(s) did you use to capture the the screen shot displayed above?
The new MS FrontPage 2003 provides some features that complements well with SharePoint sites - data views, mods, etc.
A nice way to start the new year with a bang ! I guess this is the first article online that gives an introduction to objectspaces. And great that you use the mapper utility in your examples because this one makes objectspaces much easier to use than writing all this XML manually. My comments are only about the introduction : - There is at least one 'real-world' property that is easier to represent in a relational database than in an OO language : many-to-many relationships. This is easy to represent in an UML class diagram but once one starts coding you'll have to maintain collections on both sides of the relationship. - Real life taxonomies are sometimes difficult to map on current OO models. Like the well known example of geometrical figures : The class of squares is a subclass of the class of rectangles, nevertheless a rectangle has two properties (length and height of its sides) while a square has only one (because these lenghts are equal). Nevertheless, in the current OO implementations a subclass can only extend the number of attributes of its superclass. And this is only one example. - There are other database technologies that allow for an easier mapping with an OO runtime : object databases and XML databases. However, you're right in assuming that these are not widely used. Best greetings, Stefaan
Thx for the positive comments! Garibaldi, I used Paint Shop Pro 7 to capture the screens.
Bill, I copied the SQL from the Query Analyzer of SQL Server 2000. Stefaan, thanks for your comments! How would you implement many-to-many relationships in a relational DB? It would require some additional helper tables I assume, so it would involve quite some coding. I agree that sometimes real life taxonomies are difficult to implement in an OO model: you provide a nice example. But I do think in general OO models can reflect better a real life situation. Btw, did you have a chance to try ObjectSpaces yourself, I'd love to share some thoughts! Enjoy the holiday, Jan
Yep, one uses an association tables for many-to-many relationships with at least the foreign keys of both related entities and possible some extra information about the relationship. And I agree that OO models and an OO centered middle-tier are great for the business applications must of us work on. But when used 'in the full richness of reality' it still has some limitations. And yeah, I played a little bit with ObjectSpaces at home. First without the mapping tool which was really hard because when one makes a mistake in one of the mapping files the error messages of OS are not very informative. Still didn't try the many-to-many relationships though. Would love to play more with this and share thoughts too ! :) Take care, Stefaan
Hi Jan, There is a lot of information to be found in the C# language specification 2.0 draft. It is located at: http://download.microsoft.com/download/8/1/6/81682478-4018-48fe-9e5e-f87a44af3db9/SpecificationVer2.doc As you were not sure whether the syntax of C# is correct, let me assure you it is. The <itemType> you used after IComparable is used only when the interface (or class) itself is also a Generic. Otherwise, you would not include it. BTW, did you also know that you can add constructor constraints as well. The following sample requires the V type to have a default parameterless constructor. In C# multiple constraints are added to a type in a comma separated list. public class SomeDictionary<K,V> where K: IPersistable, IComparable<K> where V: MyBaseClass, new() { // ... } Hope this helps.
Thx Alex!
Does it warn and ask confirmation when deleting records? I've created my own extended datagrid with this functionality, but that's all. If your grid has this + those other thing, I gladly use yours :)
Geert, at this point: no. But if there is any sample coding available on the net that explains this feature, I could include it.
I will send you a mail with my component included. How easy can life be :-)
To garibaldi: in the HTML Help Workshop (default installed with Visual Studio .NET) you will find a Image Editor. With the image editor you can capture screens (to place in your HTML help files or for other use)
Typical IT Project :-)...
I've been trying to use the webservices over SSL and have also been having problems. I only get a problem when I do an iisreset and don't use the webservice straight away. If I start up another site (or if another site gets used before the webservice is called) then the webservice fails with either a proxy authentication error 407 (behind proxy on the development machine) or a "Could not establish secure channel for SSL/TLS" on the external server. I'm using .net 1.0 sp2 with C# and I have an internal webservice calling an external webservice over SSL. The webservice works fine for the most part but it obviously a problem if it happens at all. And I've also tried creating a test certificate and getting the same error with that. Many thanks
Mmm, I don't know what could be the problem... I suggest you post your question in the IIS or ASP.NET newsgroup.
Great stuff, Jan! keep up the good work!
Sweet! Nice work...keep it up!
Really nice Jan.
Or just the following will do the same too: myDataSet.ReadXml("http://msdn.microsoft.com/rss.xml")
Thanks - great help :)
Does this actually work? I have the following... but always get thrown into exception private void Form1_Load(object sender, System.EventArgs e) { System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy(); WebClient client = new WebClient(); try { Byte[] pageData = client.DownloadData("https://www.testdomain.com/"); string pageHtml = Encoding.ASCII.GetString(pageData); textBox1.Text = pageHtml; } catch (WebException x) { textBox1.Text = "enter Webexception"; if (x.Status == WebExceptionStatus.TrustFailure) { textBox1.Text = "trust failure"; } } } Additional information: The underlying connection was closed: Could not establish trust relationship with remote server.
evaluatiuon
How would one use a tree or a datagrid that requires a popup button with the ExtendedDataGridControlColumn? How does one add custon columns to the add editor in the grid so they can be picked at design time; editing registry or xml maybe? Will you provide an EnumColumn and a column that uses the UITypeEditor to do the rendering and editing? I know your code isn't open source but how do you render a control that is associated with a column multiple times in a grid each with different state as you did in your example with the group of radio buttons and the progress bar?
Jarrad 1) Just create a Custom Control and add a TextBox and a Button to it. 2) Check out this article: http://www.microsoft.com/belux/nl/msdn/community/columns/jtielens/datagrid.mspx It comes down to creating a custom DataGrid class. 3) Mmm, can you explain a little bit more? 4) Each cell is an instance of the control.
Nice work Jan! ;-)
yukith
I have been getting a "Could not establish secure channel for SSL/TLS" error, as well. The interesting thing is that it only happens on an XP machine running the client app. I install and run the same web service client on my 2000 Pro machine with no problem. The web service is hosted on a 2000/IIS5 machine. We are using a proxy server but both machines access the same one. Has anyone found a solution to this? Thanks.
string assemblyFileName = Assembly.GetExecutingAssembly().GetName().CodeBase; compilerParams.ReferencedAssemblies.Add( assemblyFileName.Substring("file:///".Length)); thanks dude.. the above thing made my life easier.. i had sorted out every thing except the above :) btw im working on a scripting engine in my application which lets the user to execute functions already built in my assembly :) cheers
I used this with a WebClient that wasn't accepting a certificate and it worked fine. Great blog!!!
Jan, Just thought I would point out that the link column's alignment property does not work. Every link column ALWAYS ends up left justified. Is there a way that I can correct this in my application? Other than that, it was very useful! Thanks! Jim
thanks
Yet another case where I am not able to "keep up with the Joneses" ;-)
My (free) ExtendedDataGrid control gets quite some attention and every developer knows that the more people use your software the more bugs will be reported. To organize bug reporting, feedback, feature requests, ... I've created a GotDotNet Workspace: http://workspaces.gotdotnet.com/extendeddatagrid. So if you have something to say about this control; please use the workspace. New releases will be put in this workspace, so you can easily track them by using the RSS feed. Everybody who has contacted my concerning the ExtendedDataGrid: thanks for giving it a try. I'd like to ask you to post the reported bugs in the Bug Tracker. I'm sorry for the hassle.
Good good and again excellent ;-)
'With' and 'WithEvents' are two completely different things! 'With' allows you to reference an object without having to specificy that object each time, eg: With Form1.Controls.TextBox1 .Text = ... .Enabled = ... End With (simple example, but sometimes you have to set a lot of properties on an object multiple levels deep). WithEvents is short hand for [event] += New System.EventHandler([eventHandler])
I've built client-side Crystal reports based on datasets returned from a webservice, but it requires a typed dataset so it doesn't really fit the "generic interface" criteria...and for various reasons it's a pain in the neck, besides...any change to the dataset makes all the datafields disappear in the report, and it breaks when you switch to a different webservice (eg between dev and live).
Dear Jan, thank you very much for your detailed description. Unfortunately I am expieriencing a similar problem like kinsley. Sometimes it works sometimes not. I have a messaging service that calls a https connection sometime 5 times in a row. Every second call fails. I log the access of myCertPolicy in the eventlog and interessing enough it only gets a call 3x2= 6 times for 5 requests to the https service. The certificate of the site is invalid und there is also a password to be transitted via netCredentials. The whole Programm works fine as a console application. Once installed as a service on the same machine it doesnt work. Dotnet 1.0 on windows 2000 KarlHaak@gmx.de I would appreciate help on this
Jan Tielens presents some ideas on how to do reporting in a SOA world and poses the question whether or not there are any other know solutions or products: In the "good old days" of pure two-tier Client/Server programming...
Ingo Rammer is right, that your reporting will be a service, but that is not really the issue is it? In a SOA, your data doesn't necessarily come from a database, or if it does, it's not necessarily your database anyway. You need to mangle all your fragments of data into one homogenous lump, or have at least similar fragments, to be able to use one of the existing database reporting products. Infopath is ok, but it wasn't designed to work with more than a page or two of data, and ultimately it is more geared towards data entry and validation. The other problem you will run into is printing those reports. (in my unfortunately biased opinion)I think that the XSL-FO spec combined with XSLT is a workable solution, but the design tools are still in their infancy.
need product key hope you can help
Jan, Congratulations - I've read every fucking post from 100 guys who claim to know what the hell they are talking about - your solution works like a charm. THANKYOU for posting this info. I hope other people with https+httpwebrequest problems find it.
good
try setting Option Strict On ......
Come On Microsoft, please do make the webcasts avialable for offline viewing. if so, thousands of developers will be benefitted by it. Hope MS Listens to the Community and makes it avaiable for downloading previous webcasts
Thanks Jan, This was a particularly frustrating problem for me There is a KB article 819450 that is pretty close to what I experienced, except that I had .Net 1.1 installed. I could also refresh the page and the request would complete just fine. In addition to the solution you mention, I also nested about 3 Try...Catch blocks to have the request "auto-retry". That way if I mistakenly refreshed the Web Reference, I'd still be covered. (As excited as I am about 2.0, it's really cool to see a non-Whidbey solution, too!) Thanks! Todd
Jan, Thanks for the plug! Our little community of Office System enthusiast continues to grow! Chris
hi,i want to know : Hippo.NET have support .net frmaework 1.0 verson????? my english is pool,sorry!!
Maybe a good remark is also to first create an additional virtual server in IIS so that you can host your WSS sites on that one. Otherwise the default Web site will be used and you will not be able anymore to host 'normal' Web sites (due to the ISAPI filter installed by WSS).
good posting - I am in the midst of WSS deployment and installing default MSDE and not using it is wasteful. Is there a tech note or KB article on deploying it on an external virtual server (in IIS) and *avoiding* the ISAPI filter problem for default (& other) web sites (as mentioned by Patrick)? Thanks.
Thx for the tip Patrick!
Do you have this code in VB somewhere? We're using VB.Net for our ASP.Net pages and I can't get a decent conversion for this
Nice info on WSS, but also the point on IIS 6.0 by Patrick is important. EROL
I wish I had though of Patrick's tip when I installed here. Good job I've got a second server for "normal" sites.
Nice! That's the reason I still like webservices. I don't see people using webservices yet for exchaning information across internet or anything. But building a Winforms client on top of your web interface seems great! Ofcourse, it's a lot of extra work. The web interface, the web service(s) _and_ the winforms client. But after that you've got some great functionality!
Good example. Personally I like to build my own Web services layer around the object model or Web Services of SharePoint itself and not let client applications talk directly to SharePoint via the SharePoint Web Services. If you start for example consuming the Web Services for retrieving the items out of a list, you will start to experience the reason behind it.
Yeah, I know... handling plain XML comming from the Lists webservice can be a royal pain in the *ss (been there, done that). I like the idea of a wrapper web service around them ... let's see if I can find some more time!
At the website of DevHawk, you can also dfind a Sharepoint webpart for RSS... http://www.devhawk.net/prj_SharePointSynd.aspx
Hey folks - this brings up a related question - is there a way to convert an existing MSDE-based WSS site to SQL? The application of this would be great for Small Business Server which uses several instances of MSDE running and is very wasteful on memory. Since SBS has SQL as an option, that the next logical step.
Steve, I haven't dont this myself, but I think you could use the smigrate.exe tool. http://www.microsoft.com/downloads/details.aspx?FamilyID=3df85705-5635-40db-adbe-e13ab8684a60&DisplayLang=en
It seems to me that VB6 nonsense like WithEvents and optional variables just gets recompiled, anyway. I can't see how you can have a concept like delegates and then break it by pretending events are sent by variable name, not by object. And as for optional arguments...i constructed a class in VB and another in C# that had nothing but a constructor which made three assignments. In VB, I made them optional. In C#, I made 8 seperate constructors for each of the possibile ways to call the constructor (which them called the most complete constructor with their own defaults). I compiled them both with the same switches and dependencies...the VB file was 20% larger. Implies to me that it's coding each calling signature as its own individual method. I'll stick with doing it myself, thanks.
vslive is next month right? I have been able to see some of the pre beta 1 bits and they have come along way. I cna't wait to get my hand on them....
I completely agree with you on this! My hope is that these issues get addressed in v3. I suspect with the moving of WebParts to the core ASp.NET 2.0 plumbing WSS will be rearchitected and have some interesting features currently missing! I'm also hoping MS changes the way VS.NET can author to included non-isolated. I'd also like to see the ability to use the AD/AM directory ina FORMS based authentication scenario with WSS. Of course a native RSS/Atom option for all content would also be high on my shopping list for a WSS 2.1 feature! And I too get frustrated with the lack of alert capability on content posted to the main page. They should have included a 'whats new' WebPart which I once saw MikeFit demo in a web cast but it was never posted to www.gotdotnet.com as he mentioned it would be.. etc etc
hey whats up>nothing here...how are you .im good...well i wanted the new version of msn messenger...if i could but it brought me here..
Jan, I'll be staying at the NH Hotel. Arriving Monday afternoon and staying until Thursday morning. I created a thread on the MsBeluxForums (http://www.msbeluxforums.be/) for those wanting to meet, for example at the Geek Fest at the end of day 1. Anyway, I'll be seeing you soon!
I'll be there as well! :p
That's me :) I'll do my best to make intresting posts! ;)
Thanks for introducing me Jan. The Geek Fest at the Developer & IT Pro Days 2004 will be great. No doubt. It's time I'll teach you to party! ;-) About my pizza restaurant: It still in Alpha :)
Jan, Thanks you saved my bacon today, our webservice keeps timing out over this. I had to convert it to VB.NET cause I don't know C-Shizarp. Sample I Used: Protected Overrides Function GetWebRequest(ByVal uri As Uri) As System.Net.WebRequest Dim webRequest As System.Net.HttpWebRequest = MyBase.GetWebRequest(uri) webRequest.KeepAlive = False Return webRequest End Function
Jan, I saw that you have installed it on our sharepoint server. I can only say : it's nice and thanks, it gives us a little bit more functionality. You've done a great job with this.
terrific! Thanks..
They work a treat but I've not found an application for them on my server yet ;o)
Dear Josh, I finally managed to solve my problem an posted a solution in VB under http://www.dotnetforums.net/t80674.html It handles certificate problems, user authentification, asynchron requests and a problem regarding keep alive connections. I hope this will be of some help to you. Karl
A new CMS online book has been published - Building, Deploying, and Maintaining Intranet Sites for the Enterprise discusses how a small team within ...
Thanks
Dear Jan, great webparts. I would like to ask you if I can count on you for developing web parts for my company. In that case please send me your conditions. Regards, José Antonio
In my dealings with customers who have implemented SharePoint, the number one complaint that always surfaces is poor navigation within a site collection. Jan Tielen has created a Navigation web part that is just what the doctor ordered. I've always had this on my list as something to build, but I've just never got around to it. She has also written a very useful MyAlerts web part for use on individual WSS sites. As you may know, the portal and...
It is interesting how open source vs. commercial software is becoming a political issue. But there are ways to approach it. A political party who advocate the humiliation of people (whether admired or loathed, rich or poor) simply show themselves to be immature and unprofessional. I recently joined a University and was amazed at the level of integration Microsoft products have when working together. I can only imagine how this helps organise government institutions. Open source solutions simply aren't at this level yet, and perhaps without a corporate structure organising the teams and projects, will never be.
I share your opinion completely! I really don't get how you can write such statements. And why is Spirit posting that video on their site? Doesn't that show of immaturity? Damn... Well, I'm not going to vote for this political party this spring!
I'll sign a petition if there is one, or have my name added under an Open Letter if it's a good one. I really can't believe they're making such a stupid remarks, and a political party who is involved in humiliating people should have their own laws used against them. Like the recent law that stops funding parties who discriminate. So far for Spirit being a grown up party.
Even better.. They state the example of Munchen in Germany which switched to Linux.:)) Aren't they allready way over they budget?? Yes they are and just because Linux is "free" and "easy" to use. Well except offcourse that installing a printer takes a day on Linux and in XP a minute. But yes I can see the "easy" in use. Shorty
I'll say... this even goes way further. Ever seen the Bert & Steve TV?? (its in dutch) http://www.ideeenfabriek.be/bertenstevetv/index.asp I've added my feedback http://www.ideeenfabriek.be/bertenstevetv/geefmening.asp?iID=6 If software needs to be free, I'll like my daily bread for free too thanks! If not, I'll have no money to buy it. Btw: its clear again that they do not seems to know the difference between Free Sofwtare (as in no license cost), Open Software (as in you can extend it), Open Source (as in you have the zillion lines of code), Open Standards (as in ratified by a offical organisation, btw .NET is a ISO standard => http://msdn.microsoft.com/net/ecma/), Proprietary Standards (COM, JAVA, J2EE) Aaah silly politicians, I wonder if they ever read their own job description; I'm sure it does not state: gotta get on TV a lot, no matter what.
This is sickening at many levels. First, it is sickening to see that these technical decisions are not being made on any form of merit, but purely on false ideological grounds. The companies behind OSS (Novell (Suse), RedHat, IBM, MySQL ...) are pure commercial entities. They are no different than Microsoft or any other software company in that aspect. Surely no-one is suggesting government should take development and maintenance of basic software platform technology “in-house”? Or should they run on stuff that might or might not be available in future depending on some college kid’s “do I feel like it” 3 month support cycle things? Second it is sickening on a business level. The envisioned OSS solutions are equally and sometimes even more expensive even from a pure license perspective (look up the prices for RedHat Enterprise Linux or the Suse equivalent, StarOffice etc., and compare to the MS licensing). The envisioned OSS solutions require far more expensive consultancy and custom development for things that come out of the box in the equivalent Common Off The Shelve (COTS) offerings. The envisioned OSS solutions do not offer the same usability, both in terms of end-user, application developer as well as operational interfaces. The envisioned OSS solutions do not present a better opportunity for local Independent Solution Vendors (ISV's), who's skill set is more in line with commercial offerings. Typical commercial offerings present better performance on equivalent hardware than OSS solutions. OSS offering are generally supported for much less time (typically 1-3 years) than Microsoft solutions (typically 5-7 years) requiring more frequent upgrades with all the associated costs. Both platforms only tend to adhere to defacto market standards in their own fields, and only pay attention to "interoperation" when requested by market forces. Thirdly it is sickening to see these parties so comfortably meddling in affairs in which they have absolutely no expertise. They are willing to risk an entire sector of the economy that has performed exceptionally well in a free market, for the sole purpose of scoring some fringe left votes in the next election. If they are so concerned about the Belgian IT sector, why do they not follow the advice of that same sector? When asked they (Agoria if I remember correctly) unmistakably told the government to butt out and not meddle. Last but not least it is especially sickening that all the extra cash that will be needed for this “coup” in the future will have to be paid by us, through extra taxes that will need to be raised, making our economy even less competitive in future (*). Here’s a guess: Will a future “mauve” coalition let the blue partner score by having them cut expenses through “outsourcing” all of that expensive IT work to some cheap labor market? (*) for those readers not familiar with the Belgian scene, we have extremely high tax regimes already, and a frightening percent of the Belgian workforce is employed directly in government administration. The coup de grace of the socialist/liberal government here is that they declared a “tax amnesty”. While regular law abiding citizens payed almost half of their paychecks in income tax directly to the state government, those who where “less scrupulous” and worked in the “black” economy can now whitewash all there gains over the years by paying a onetime single 6% fine.
I reacted, lets see if it comes up..
Well.. I am gonna vote for SP... this way I can safely download any book, any cd and any movie from the internet! Go for it Spirit! Everything for free! Why pay for intellectual property? And by the way, why do we pay you guys for so much crap?
I would really like to implement this into a project I am working on, but I dont know were to find the web.config file.
Thx for the support guys!
I don't get the point. Linux easy to use and install, well I'm not sure about this. And also, where is the integration like we have with Microsoft products. Jan, let me know, I want to sign also the petition or open letter. And why using an old item about Bill in Belgium ? It has no use. And then the petition. Well I'm not in politics, but I understand Jan (and all the others) very well. Is this what thos politic guys do during the day, time to put some new guys up there.
I can only say this... Goe bezig ^o) ironical offcourse. So if software should be free, then i'll have no job anymore
Brad, you can find the Web.Config in directory that is used for the website/virtual directory in IIS for the SharePoint site.
Jose, I've sent you an email, if you didn't received me contact me (http://weblogs.asp.net/jan/contact.aspx).
Well euh Jan bring the aspx online and we will sign your petition amen. PS going for another round in the "Palieter ?"
SPA-Spirit are those guys who say everything should be free. Just to get more votes, because they surely do know that nothing is for free (even not Linux - and I'm not talking about those ISO's you can download, I'm talking about enterprise level). And if they change everything to Linux, how much will this cost us tax-payers? Last month, a big e-gov project of the Fed failed (another one). How much does that cost? A lot...
Strange that a anti-MS political party is running their site on ASP pages :) according to Gartner (http://www.itweek.co.uk/Analysis/1143712) , the TCO of Linux is more expensive than Windows : When they want to buy 8000 PC's : 41840000 Pounds for Windows 43840000 Pounds for Linux => difference of 2 MILLION Pounds !!!!!! (= 3.5 Million Euros) Nice way to spend our tax money !
It's still broken. I attempted to create a NAnt buildfile from a VSS C# project file and received the same error as Craig Wagner did above. What gives? Dat
Great job, Jan. We'd like to license these for use on our hosting server -- drop me a line with pricing information. :)
This post was very helpful! Thanks!
How do you install these web parts? Just import them? I noticed a dll file ...where does that go?
To deploy them, just put this assembly in the GAC (for example), put the DWP files in the wpcatalog directory of your SharePoint site and add the following node to the SafeControls section of the web.config: <SafeControl Assembly="Leadit.SharePoint.Essentials, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1a431c1526626774" Namespace="Leadit.SharePoint.Essentials" TypeName="*" Safe="True" />
where does the .dll go? In the same folder as the .dwp files?
You put the dll in the GAC (Global Assembly Cache) or the \bin directory of your directory for the website.
I'm just wondering about the comment from Eric Legault calling Jan "She". Now I used to work with a Dutch guy called "Jan" and a bit later had a long e-mail correspondent with a guy called "Jan" in England who turned out to be a woman. I suspect that Eric has made the same mistake in reverse as surely this Benelux Jan is a man! Sorry not to make a Sharepoint comment but I'm going to look at these on my test sites at work.
Mike, you're right! I'm male :-) But Eric has already corrected this on his site.
The Infopath SP-1 Preview is available for download. How sweet is that news?? I am currently working on designing a solution that utilizes InfoPath, Sharepoint and Web Services to enhance our sales team workflow. So I was hoping that I could get my hands on the service pack as soon as possible since I already knew I could take advantage of some of the new features that were leaked/released a while ago. I have loved InfoPath since I first played with it during the Office System 2003 Beta. However I was always disappointed at some of the things I found that were missing. The release of the reasonably feature rich service pack helps me believe that there is a lot more to come for InfoPath and while it's potential has yet to be truly tapped...but it will. InfoPath & Sharepoint are tools that are ideal for individuals like myself that are obsessed about efficient processes and information sharing. I am now empowered to create the sites, forms, lists, and workflows that I would typically require a developer to implement. Given that we are a development company, there are certainly lots of developers around. However taking one off client work...
Nice. And if you don't want to or can't install .NET assemblies on your (probably hosted) SharePoint site then just use the built-in XML Web Part with a custom XSLT style sheet as shown at http://playground.doesntexist.org ;-) Cheers, Siegfried
Nice part, Too bad the crumbs part shows the c<n>-sites.
What do you mean by c<n>-sites?
E.g. in an url like http://zwaan/C8/Beheer/default.aspx the c8 part shows in the crumbs part... Intranet / c8 / Beheer However the c8 part is not a sharepoint page is there for managing url length. (check http://spsclerics.europe.webmatrixhosting.net/posts/158.aspx)
encroching on my turf ;-) -th
Don't worry about reposting, Jan -- you probably have at least some different readers. I've been meaning to say Great Blog, by the way!
Thx Laura!
That's cool, though I was hoping for something that would discover sites no longer linked anywhere, mainly to discover orphaned sites (like on a dev server). There must be a list of SharePoint sites somewhere in the db, anyone know how to get at it?
I get some error as below. A Web Part or Web Form Control on this Web Part Page cannot be displayed or imported because it is not registered on this site as safe.
I'll be there !
I won't miss it! Count me in. :)
I try to come also.
I am having trouble as well. I can't seem to get the web part registered as safe - I've edited the 6 or so web.config files I could find, but no go.
I totally agree! I would love to be able to set up one alert for each of our team's sites. I'd also like to be able to (as an administrator) add alerts for other users.
Many many thanks Jan, all of a sudden my SharePoint site has opened up. Its like springtime has come! What is a breadcrumb though?
Thanks :-) Breadcrumbs: http://psychology.wichita.edu/surl/usabilitynews/52/breadcrumb.htm
Check out these webparts: http://weblogs.asp.net/jan/archive/2004/02/12/72079.aspx
Microsoft has released SQL Server 2000 Reporting Services. What do You think about using it as a reporting engine?
RSS Reader Webpart for SharePoint - The layers of geek required to make this of any interest to ANYONE make...
Before I look at this more closely, is there anything in your opinion that your web part can do that Tim Heuer's can't ? (From your example I can see the more lines of description per item but I'm not sure this is a good thing - can it be amended by a parameter ?)
I have Tim's web part installed and working great. I'll link you tonight when I get home if others need to use the feed. Great effort!
Mike, you can set if you want to see the description or not. Also, you can choose which image you want in front of each post. I don't want to say my reader is better than Tim's! Mine doesn't display a message referring to the creator's site (this could be important in a corporate envirionment) (Tim please don't take this personal :-).
Only 2 days after opening the registration, the session is already full! Way to go, Jan! PS. I'll be there too!
This seems to be the solution for me to, but I'm usin WSE (Web Service Enhancments). Trying the suggestion gives an "Invalid Cast". My webservice is inheriting from Microsoft.Web.Services.WebServicesClientProtocol, it in turns inherit System.Web.Services.Protocols.SoapHttpClientProtocol which is the normal to use for a webservice. Any suggestions?
Hi, Jan I was wondering if you'd be willing to share the source for this. I'm just getting going with WSS web part development and these are exactly the type of things I'm trying to learn to do.
Doh! I see that's what the second file is... ok, ok, nevermind and much thanks.
Mike, just check the links at the end of the post! :-)
I have a project where a vb6 COM PC-based client is calling a webservice created in c$.net It works fine over HTTP. I've read over yours and many other postings about this topic. Your solution assumes a .NET client (I think ?) Is there a similar solution from COM? Thanks very much, -Larry Dim oXMLHTTP As XMLHTTP Dim oDOM As DOMDocument Dim viewNodes As IXMLDOMNodeList sB = "" & "<?xml version=""1.0"" encoding=""utf-8""?>" & _ "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" & _ "<soap:Body>" & _ "<TestConnection xmlns=""http://abc/pays/"">" & _ "</TestConnection>" & _ "</soap:Body>" & _ "</soap:Envelope>" Set oXMLHTTP = New XMLHTTP oXMLHTTP.open "POST", "https://localhost/abc/pays.asmx", False oXMLHTTP.setRequestHeader "Host", "localhost" oXMLHTTP.setRequestHeader "Content-Type", "text/xml; charset=utf-8" oXMLHTTP.setRequestHeader "SOAPAction", "http://abc/pays/TestConnection" oXMLHTTP.setRequestHeader "Content_Length", Str(Len(sB)) oXMLHTTP.send sB Set oDOM = oXMLHTTP.responseXML
Larry, yes my solution is for .NET. I don't know how to accomplish this in VB6...
hi
My subsites don't show (everything is on the first level). Level is set to 5. Could it be because of a German Sharepoint Portal?
I am developing a client that consumes a webservice over https. The web server is set up to require client certificate. how should I select the client certificate and provide it to the webservice ? Thanks Andrea
You can use the ClientCertificates.Add method of the proxy class.
terrific stuff... thanks..
ddd
Jeden Tag finde ich neue interessante Artikel und Tools rund um die SharePoint Technologien - man kommt kaum noch nach, alle Ressourcen zu sammeln geschweige denn detailiert auszuwerten. Hier die Highlights:
I have an application which invokes(calls) a webservice (on IIS 5.0 , windows 2K) every 10 seconds. After a long time(about 4 hours),the call to the webservice fails. Do you know how to resolve the problem.
Agree.. I will carbon copy and add my letter to the collection... I used the webcasts to train myself and in-house developers on ASP.NET, and usually like to listen to a few on long flights, which I take often enough to care. Microsoft should enable the dev community to archive these or download them much the same as the .NET show, etc. Especially since they are in WindowsMedia format now anyway.
I used to use Anakrino until a friend of mine showed me Reflector. Overall a much better product.
Sorry, used this in the Portal (where it does not show the structure of subareas). Works fine on Sites.
Could be handy :) Nice work.
OK, I know this can't be very complicated but I'm having trouble getting this to work. I've copied the dll to the /bin directory at the root of my WSS server. I've tried uploading various dwp files and dropping the web part on a page, and each time I get the "Web Part appears to be causing a problem" message. Any ideas?
p.s. I added the control into web.config as well.
Could you provide the exact paths where the .dwp and .dll files should go? For both the GAC and BIN methods too. That'd be great.
Thanks for all this infos.
I'd like to confirm the need for more information about where the GAC is; where the WPCATALOG is and where the web.config file is. Those of us who only use (rather than create) web parts haven't a clue about the locations of these bits - heck I can only guess that the GAC is the Global Catalog, but if so what does the A stand for?
I should perhaps also have said that this newest web part is something that I am sure lots of users are demanding from their WSS site administrators! I know it is something I want to have ready for them. The fact that it is available (as a free web part) may even push the use of WSS rather than STS 1.0 which would be a very good thing (I'm suffering from them not wanting to move).
One limitation with SPSv2, however, is that "Portal Listings" within an area are NOT classed as a list and do not have a list ID - therefore they are not picked up by tools such as this. I definitely recommend NOT using Portal Listings if you wish to interract with the data in any way.
To continue on not being able to get this to work, I've added the control to web.config, moved the .dll into /bin, uploaded the .dwp file via the browser, dropped the web parts onto pages and get a "problem web part" error. Additionally, I can view the following in event viewer: Request for the permission of type Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c failed. Any help/advice would be much appreciated. Thanks!
OK got it figured out. Apparently WSS virtual servers have the lowest security permissions by default, meaning any web part that accesses the Sharepoint object model will fail. http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_sp2003_ta/html/sharepoint_wsscodeaccesssecurity.asp
I just put it in the gac and everything was happy.
Nice Info! I too have found the documnetation very limiting. Thanks for this great example. ~Jim
I tried to install it but I got a System.Net.WebPermission exception. MediumTrust is not enough? Then I tried to adapt the wss_mediumtrust.config but then I got "Die Sicherheitsberechtigungen der Assembly leadit.sharepoint.rssreader.dll sind zwischen den Anwendungsdomänen nicht kompatibel." Sorry, can't translate that.
Stephan There are two solutions for your problem: 1) put the dll in the GAC 2) change the source code a little bit and: add the following attribute to the AssemblyInfo.cs file: [assembly:AllowPartiallyTrustedCallers] I'm sorry for the hassle, but I'm planning to release an update with that attribute already in it.
1) is in GAC 2) never compiled a web part, just "normal" .NET apps. Sharepoint libs not found. Do I need to install something?
You need to copy the Microsoft.SharePoint.dll from your server to a place on your local machine. Then add a reference from the web part project to that assembly. If you have further questions, please send me an email through the "Contact" link.
Looking for http://www.leadit.be/buildfilebuilder gives a 404. Can this be downloaded as an .exe from anywhere else? Thanks.
I'm using Sharepoint Services (Not Portal Server) and have installed the web parts in GAC and _WPCATALOG I've also modified web.condig as per instructions, however I can't get the breadcrumbs nor navigation to work. They are available allright, but when I drag and drop them to a page nothing happens. Please advice
You can find it here: http://dotnet.leadit.be/buildfilebuilder/
First of all: really great web parts, dude! Second: I just want to share some experiences I made installing the web parts. I am using Windows Sharepoint Service (WSS) using virtual server configuration. In my case I had to create manually a bin directory under wwwroot and had to copy the dll in there. Also use the web config file directly in wwwroot path. After doing that I was at least able to upload (import) the dwp files. I still don't know where to put these files on the server.
Hi Jan. Glad someone else aggrees on the state of the BizTalk documentation, and thanks to guys like you who share ideas. I tried this last night, and found I had to set the Max Ocurrences and Min Occurences properties for the ns0:Customer node to unbound, and 0 respectivly to get repeating groups. This should be done after stage 6. Cheers, Ayjay...
are user defined macros allowed? I was trying to use %src_filename% (from 2002 documentation) but it is not defined for 2004.
You have been Taken Out! Thanks for the good post.
don't think so Mike...
You rock... Thanks for taking the time to do the polishing...
Thanks. Great example worked like a charm in .NET. There's the same thing similar way to do this in MSXML via COM. wwalseth@ix.netcom.com var xmlServerHttp = new ActiveXObject("Msxml2.ServerXMLHTTP.4.0"); if( bUsingAProxy ) { // set the proxy server name, as provided on the settings screen xmlServerHttp.setProxy( 2, "Your Proxy Server Name", "" ); xmlServerHttp.open( strMethod, strURL, false ); // must occur after the connection is opened. xmlServerHttp.setProxyCredentials( "proxyid", "proxypw" ); } // NOTE: set SSL validation flags after opening, otherwise an exception is thrown... if( bServerHTTP ) { // if SSL, then turn off if( strURL.search( /https:/i ) != -1 ) { var nUnknownCA = 256; var nWrongUsage = 512; // requested URL does not match the certificate URL. Occurs when using a IP address instead of a name. var nHostMismatch = 4096; // NOTE: It appears that the numbers are documented incorrectly, invalid date is actually host mismatch! var nInvalidDate = 8192; var nAllErrors = 13056; // Doesn't appear to work xmlServerHttp.setOption( 2 ) = xmlServerHttp.getOption(2) - nInvalidDate; } } // 30 seconds to resolve and connect, 60 seconds to send & receive var lResolve = 30 * 1000; var lConnect = 30 * 1000; var lSend = 60 * 1000; var lReceive = 60 * 1000; xmlServerHttp.setTimeouts(lResolve, lConnect, lSend, lReceive); // NOTE: disable any server cache or proxy for this item xmlServerHttp.setRequestHeader( 'cache-control', 'no-store' ); // Mimic browser form post... xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" ); // For SOAP and XML posting // xmlhttp.setRequestHeader( "Content-Type", "text/xml" ); // Send the document, process any basic HTTP errors xmlhttp.send( xml ); if( xmlhttp.status != 200 ) { throw new Error( xmlhttp.status, "HTTP Error: " + xmlhttp.status + " " + xmlhttp.statusText ); } if( !xmlRec.loadXML( xmlhttp.responseXML.xml ) ) { throw new Error( xmlRec.parseError.errorCode, xmlRec.parseError.reason ); }
What if I want to keep the same name of a file. For example, if the file on the recieve port is foo.xml I want the send port to send the file as foo.xml. Can this be done?
Very good! solved my problem
I want to use IE Web Control to generate Tree struct of Document. Then, How can I deploy the IE web control?
I want to generate Tree by IE Web Control!!!! please help me, I am crazy!!! My E-mail: defrostcn@yahoo.com.cn
A great trick, thanks !!!
You want to use %SourceFileName% - it's case sensitive.
Hi, I've been trying to install the webparts and I've got as far as being able to see them in sharepoint, but when i try and add them to the main page i get the error : "A Web Part or Web Form Control on this Web Part Page cannot be displayed or imported because it is not registered on this site as safe." I've added the code to the web.config file, set the wss security to medium and installed it in the GAC using GACUTIL /i to try and get around this but nothing seems to work. Has anyone else had this problem. thanks in advance.
I installed the Leadit.SharePoint.Essentials successfully using Lead-it SharePoint Essential Webparts 1.1.1.0.msi but now when I am trying to install Leadit.SharePoint.RSSReader using the Lead-it SharePoint RSSReader Webpart 1.0.0.1.msi I am not successful. The installation program goes well and gives no errors and says that the installation was successful. When I open up the website and try to look for the web part I don’t see it. After I examined the wpcatalog folder I didn’t see *.dwp file for this web part. I didn’t see the dll installed in the /Windows/assembly/ folder either. So can someone tell me what is going on here? Tam
Thank you so much! Now why didn't they put that in the documentation???
When I elect to display dates with the feeds, they all display as 1/1/2001
You MUST make sure that the assembly is known to the GAC. It worked for us without setting the wss security to medium. Maybe you have some typo in the web.config?
Yes, works like a charm! For that one webservice that you want secured but no want to pay $400 dollar for every year. Like a charm! Thanks!
Hi Jan, Thanks for the article, just wondering if the code is correct. The line: SetExternalFunctionName(GetType ().Assembly.FullName, "SecurityFunctoids.EncryptionFunctoid", "DecryptString"); refers to the class EncryptionFunctoid, but the class name is DecryptionFunctoid. Also, is there a rererence to the SymmetricEncryption class needed? (Would it be possible to post a ZIP of the project?) I am having a real hard time with custom functoids, are there any pitfalls to watch out for? All the best, Alan
You're right! My mistake... I've used a library containing the encryption stuff. Because it wasn't the goal of my post to explain encryption/decryption i've not posted the code of that. If you're intrested you can send me an email using the Contact link.
Excellent article! I hope that Christophe starts writing more articles and feed the excellent MSDN.BE site. Something to be proud of MS friends!
BizTalk 2004 Custom Encryption/Decryption Functoid (via Jan Tielen)
v.gud
Jan, We are working with Microsoft and the issue of handling exceptions inside pipelines has come up. We are looking for a flexible way to catch errors in flat files where the serializer fails for instance. Any good ideas beyond using MOM to catch the error and then routing it back through biztalk? Shawn
Shawn, you beat me... maybe something for in the newsgroups?
how can I assign the value of %SourceFileName% to a variable in an orchestration?
I'm hoping... :)
Found the answer, place the following in an expression: sourceFileName = IncomingMessage(FILE.ReceivedFileName);
Does anyone have any links to see these in action? Also, does anyone have any links to public sharepoint sites?
Jan, I installed your webpart. Unfortunately, your webpart does not seem to offer a proxy settings configuration as tim's RSS Feed Reader does. Since the Global Proxy settings do not work together with our Active Directory integration, I'm curious, if there is a work around to that issue. Furthermore, I was quite happy with Tims RSS Webpart, but for German news it does not show special characters like ä ü ö ß. Does your Webpart support such. Keep on the good work. Your essentials package is very nice, by the way... Lars
Lars, you're right: proxy settings are still missing. Feel free to download the code and alter it yourself! ;-) Keep an eye on my blog for updates. Regarding the special characters, I haven't tested it myself...
Unfortunately it looks like MOM is the best bet. They really missed it on this part of the exception management. It is so good in the Orchetation portion but pipelines are terrible. Oh well, something custom coming up :)
I face an additional problem. In addition to splitting a message, I want to have envelope fields available in my orchestration, e.g. attribute receiveDate when the envelope contained a root element like <customers receiveDate="...">. Is this possible?
It's great, Jan i've search this trick around the world :) Tanks mgi@cdhsrl.it, italy
This is grat work Jan! I thought that at the start of the blog there might have been an "essentials" component to enable an administrator to easily create "Alert Me" for any other user(s) for particular lists... For example, we want all our new users to have an Alert for Issue Log and Tasks - it's the best way to get them to come back regularly...telling the user to create it does not work that well. Any thoughts?
Julian, in a few hours I'm releasing a webpart that can do this, so keep an eye on my blog!
With C# this work beatifull, but i need something like this in FoxPro 8, some body can help me??
Nice work Jan. I am currently working on an article for MS regarding the creation of custom notification channels (e.g. getting alerted via instant messaging) in SharePoint Portal. The portal has quite another approach to the creation and management of alerts. It would be nice to outline the difference between alerts on the portal and alerts in the WSS sites. If I have the time, I will do a post on it!
I got an email from Jan asking me to comment on his Essentials webparts on his weblog. I really like them because they show what I have been working on. I set up a quick and dirty homepage to use them as a simple status report. I used a default template and just dropped the Navigation webpart, the Whats New webpart, and the RSSReader webpart on to the left side. Simple but satisfying! Since I had recently reinstalled Sharepoint to fix an unrelated problem, I had to reinstall the webparts. So I made sure I had the latest versions and started off with the RSSReader. It looked easy. It had an installer! The bad news is that it finishs with an error. ========= WPPackager install log started 3/26/2004 11:18:39 AM ========= 3/26/2004 11:18:58 AM: Error: Config file: 'd:\inetpub\wwwroot\web.config' for virtual server 'http://companyweb/">http://companyweb/' is missing or appears invalid. Could not apply required CAS settings to this server. 3/26/2004 11:18:58 AM: Error: Could not apply required CAS settings to virtual server 'http://companyweb/">http://companyweb/' during installation of 'Lead-it SharePoint RSSReader Webpart' 3/26/2004 11:18:59 AM: Success: Installation Successfully Completed The good news is that the error does not matter!? The dll is in the GAC. The web.config is configured. The webpart is in the wpcatalog. Once you figure out how to configure your firewall you are set. That was actually quite hard. I decided to put my findings in a second post on my weblog since it is specific to ISA. The installation of Essentials was quite easy if you knew the locations of your wpcatalog, web.config, and GAC. I found that I only needed to restart the sharepoint server to start using them.
I'm looking forward to it Patrick! Thanks for your comments.
It's great work. Since I am new developer in Sharepoint portal server 2003, it helps me a lot to know alert functionalty. Thanks.
Nach CeBIT und vor Summit wieder ein paar Links und Ressourcen zu SharePoint:
Excellent, this is a great we part! It would be nice if you could select more than one name in the drop-down list. It would also be nice if the person did not get sent an email to tell them the alert has been set up, but I suspect this second option is almost impossible.
Rohan, your first request can be done; I'll look into it. But as you state: the second request is impossible without writing directly to the config database (I think).
Jan, I was trying to install the code as other web part, but it's not working. By the way I have administartive Privilege.
Yes I'm very interesting...
There seems to be a problem with this solution. I use Windows authentication to connect to the service and while dev'ing I use a specific NetworkCredential rather than the default one. It seems by turning the keepalive off, it somehow disables the use of credentials as well. Any thoughts?
Syed, what seems to be the problem (exception)?
Thanks for this info Jan. I have been trying to do get Biztalk to do this. And your post definately helped. I have an issue though and was wondering if you know what it is.. I created a sample XML as specified above and passed it through this process. The file is removed from the input, but no output is produced. I changed the test XML file to contain the schema information as below and this processes fine, two messages are produced in my output. Any ideas why I need to have the schemas included? <ns0:Customers xmlns:ns0="http://MultiCustomer.CustomersEnvelope"> <ns1:Customer xmlns:ns1="http://MultiCustomer.CustomerDocument">">http://MultiCustomer.CustomerDocument"> <CustomerID>1</CustomerID> <Name>Customer One</Name> </ns1:Customer> <ns1:Customer xmlns:ns1="http://MultiCustomer.CustomerDocument">">http://MultiCustomer.CustomerDocument"> <CustomerID>2</CustomerID> <Name>Customer Two</Name> </ns1:Customer> </ns0:Customers>
I would find it really useful if within a with block I could refer to the with object directly. This would enable me to pass the object as a parameter to a method for example. In the english dictionary this concept is with myObject.subProperty.subProperty .property1 = value myString = .property2 myOtherObject.Method( ~ , value2 ) end with 'instead of... dim tempRef as ClassName = myObject.subProperty.subProperty with tempRef .property1 = value myString = .property2 myOtherObject.Method( tempRef, value2 ) end with tempRef = nothing
oops, I forgot to finsh the sentence. It should read: In the english dictionary this concept is denoted by the tilda character (~)
Great web part. One weird thing - I can only use it with the ID that is the administrator of the server. It is not working for my site administration ID.
Jan, Code like gives error in couple places SPList selectedList = web.Lists[new System.Guid(listList.SelectedItem.Value)] SPList selectedList = web.Lists[new System.Guid(listList.SelectedItem.Value)];
Hi everybody, Do you know about default pass thru transmit pipeline and xml transmit pipeline (both of these are for sending). That is the difference? Some example I work on only work on one pipeline, not the other. Same question for default pass thru receive and xml receive pipeline (both of these are for receiving). What is the difference? What is the reason to pick one over other in some situation? I also have problem with MSMQT (serialization problem). I can not get message MSMQ (regular queue) from remote machine to work with MSMQT from a local biztalk machine. I can work with them individually, but when they have to send/receive from each other, the serialization format got stuck (I tried every from custom serialization to etc..) Basically, I don’t want MSMQ and MSMQT any more, I will use SQL adapter with biztalk 2004. My main question here (this question has been asked before by others on some forum but biztalk 2004 is so now, no answer yet): I want to save the whole message (XML message from a file receive function). The XML message should be able to save as a whole string inside some SQL server table. I came a cross some example but only field by field example. I need to whole message as a string to work with SQL Adapter for Biztalk. Any recommendation? Thanks, Hung
Hello Jan I have added for error the WebPart UserAlerts to an Area. Now area is not accessibile. Always i receive an access denied. Can you any idea for resolve this trouble ??? Thanks in advance and best regards. Enrico
Jan, Thanks for creating another lovely web part. The only problem I have with it at the moment is that you have made minimal use (if any) of standard WSS CSS styles. I am wondering how to make the text come out in a color other than white on my white background web part page - without tweaking all of my existing styles! If you can find a way to correct this it would be great - otherwise I will have to set to meddling with the source code (scary prospect) or tweaking my site design so that the text ends up coloured.
looking forward to new version
how do i get this
I was just doing a search on Technorati for Sharepoint bloggers and found this newbie. Only one post so far and just a few hours old, but I am already subscribed and looking forward to what is coming. And since I am blogging Sharepoint...here is something I have always wanted. Well not always but for a really really long while. A web part that lets you create alerts for other team members. As an individual that often creates new project sites, I have always wanted to be able to slelect some key areas of the site that I wanted other team members to be alerted on as new information is added. Very cool!! Thanks Jan....
very slick. thanks!
Updated BizTalk 2004 Documentation
SharePoint and FrontPage 2003 themes use CSS in ways which aren't human. It's so unbelievably bad that it's put me off SharePoint altogether. Hideous.
Yes !!! MS rocks !!
and there was I thinking this was a new article ... I had it already! (It came out in November)
Sorry Mike! I just found this article and I thought it was intresting enough to post... :-/
BizTalk Server 2004 doc, sdk, and Visio updates
This works great! Thanks!
Looks like some great parts, however I have just spent the last 2 hours trying to get it to work, having the same issue as everyone else. I have added it to every web.config file on my server I could find, copied the dll, etc. etc., but still get the safe error...anyone figured it out yet? Thanks for the help in advance
Dustin, I've created setup projects for these web parts (http://weblogs.asp.net/jan/archive/2004/03/11/88118.aspx), did you try them?
Documentation is a patch and requires a specific build (which I dont have). But its also on msdn and 1000% better.
It may not be new but if it saves someone else a few of the bruises I have on my head from trying to find that stuff - then I think it's worth it. The problem I am finding with breaking new ground and doing some custom dev with SPS/WSS is that it's not always easy to find those quick answers that you need. That's why blogs like Jan's are so great. Thanks Jan!
EMMMM WATS THE NEW VERSION OF MSN NOT 6.1 WHAT 1 >??????????????
Here is a site with some good examples: http://www.ingorammer.com/remotingFAQ/changes2003.html
I'm very very interesting thanks
Thanks for the Welcome. This thing was in the hinges already for some time, after much pressure from some other blogger that is physically located very close to me, and after Yves beat me to the punch, I kinda released it. Part of the experiment was to be discreet and see how quickly the 'community' would pick it up. And you were the first, kudos to you!.
Daar gaan mijn primeurs :-(
Ik mocht ook wel es 't eerste zijn met iets he Patrick! :-)
BizTalk Server 2004 tutorial and online documentation
The BizTalk Server 2004 tutorial doesn't come out until April 9. I downloaded it, unzipped the exe file, and got a crummy HTML page that said "The full version of the tutorial will be available April 9". :)
I was wondering if you know if there is an advanced search web part for SharePoint services?
Not that I'm aware of...
Am trying to set up the navigation web part but keep getting this error after I upload it and try and drag it on the page. A Web Part or Web Form Control on this Web Part Page cannot be displayed or imported because it is not registered on this site as safe. Any help would be appreciated.
Anne, are you trying the Packaged webparts (http://weblogs.asp.net/jan/archive/2004/03/11/88118.aspx). If you have any problems you can contact me by using the Contact page (http://weblogs.asp.net/jan/contact.aspx).
Hi Jan, I was using zipped one at the top of this page under downloads. I copied the dll into the bin folder, copied the dwp file to a dwp folder as I don't have a WPCATALOG folder and added the SafeControl section to the Web.Config file. Is there something I am missing? Thx
Anne, can you send me an email using the contact page? Thanks!
I blogged about the steps necessary, but a picture is worth a thousand words! Thanks.
This is similar to something we need for all of our tasks lists. How can we have WSS generate an email to a user who has been assigned a task via a Lookup field in a task list?
Will, at this time you can only create eventhandlers for document libraries. So I don't think there is a solution for your question at this point...
And you can make it really looking nice if formatting the Data View Web Parts. Published some stuff last week showing this: http://www.asaris-matrix.com/sweber/playground/downloads/forms/DispForm.aspx?ID=25
is it posible to split my output xml file in Send port.
Srini, I'm not aware of any methods to do this.
Thanks for the link Sig!
In fact, if you own a WSS site you might be surprised to learn that someone else is using your content in a way that you didn't imagine (or intend) as can be seen from this link... http://www.wssdemo.com/Pages/WSSWebServices.aspx
Can you explain a little bit more Ian? I think that you still need a username/pw to be able to use content from another site. Unless ofcourse you've enabled anonymous access.
Jan, can I start adding links in the Non-MS Articles section of the WSS FAQ to this kind of article from you? (Not quoting - simply giving a title and a link to this blog page + I suspect your own "Category").
Mike of course you can! I'd be honoured! :-)
Jan Tielens has an excellent article posted on using the data source functionality from Frontpage 2003 to connect to a Sharepoint List from another site. Great post!...
Nice work Jan, btw are you aware of an error on SPS that says "Access is denied: 'Leadit.SharePoint.Essentials'. "
Tariq, there seem to be some problems with SPS (WSS is working fine). I've haven't had a chance to look into them.
Btw, did you use the packaged version?
How about using the technique DotNetNuke Private Assemblies use? It's detailed here http://www.dotnetnuke.dk/DesktopDefault.aspx?tabid=104. Don't know if it would work, but the concept seems to be what you're after. Create a project with only User Controls. However I'm not sure how the debugging would work.
Hi, I've tried to copy instructions in this video in Visual Basic. In this piece of code in my Calendar.vb: Private uc As New CalendarControl_ascx Protected Overrides Sub CreateChildControls() Me.uc = New CalendarControl_ascx Me.Controls.Add(Me.uc) End Sub It says: "Reference required to assembly 'DemoUserControls' containing the base class 'DemoUserControls.CalendarControl'. Add one to your project." I have done everything on the video, including the references to the dll and to my other project in the solution. Intellisense also suggests the "CalendarControl_ascx" in it's list, so it sees the reference there. I don't get it!
Installed your web part "What's New" but seem to have a problem. It works fine except for some document libray files that Adobe PDF. It doesn't show the file name only the location. Any idea what's up with that?
Frick, you can control this by using the "List fields" property.
Well anyone out their interested in a consulting job because we could sure use some help with the webservices client we have to design. This is what I need. A form that consumes a .NET Webservice. Let me explain: We have a page with Wireless Service Providers, once an agent selects a Service Provider it will take them to another page that displays the PINs denomination choices. Once the agent chooses what PIN denomination the customer wants, it calls the webservice using the PG_GetPin procedure to request a single PIN by product SKU, the system will reply with a PIN on a confirmation page and our SQL Server 'CCS_Wireless' table is updated. The company has provided the guidelines for developing the project but I don't have a clue where to start. Can anyone help? Supposedly, it is simple but when you have no experience it doesn't look that simple. Please email me at ceo@sc.rr.com. Thanks for any assistance.
>Mike of course you can! I'd be honoured! :-) Thanks Jan. I'll check through a couple of your previous ones too (if you're still honoured that is :) ).
I bet that produces lovely HTML... Couldn't you have just given out some real education in the form of HTML/CSS? It's really easy to make one of the bars using an unordered list, and it opens the way for some amazing things. Still, it sure looks purdy :)
I'm having my problems with the Create a SharePoint web site in FP 2003. Why on earth would you want to go to all this trouble (as showed in the blog link you had) when all you have to do is to in a browser do Create Web Site. Or is what he gets at the end of all his deleting and adding back in something special ? It doesn't look that way to me.
Colin, feel free to do so! I have to admit: at first a was sceptical about using FrontPage too. But I really suggest you'd give it a try, especially in combination with SharePoint. Mike, Yves wanted to show how you can recreate things. The final result will of course be the same! He doesn't do this all the time, only if you need some customized stuff. Actually Yves posted the transcript of a SharePoint Customization TechNet session that he did together with Patrick Tisseghem and me.
Oh, I use FP 2003 (mostly Data View) all the time so I have no problems using that. I just don't see the point of using it to Create a Web Site - so if all it was was an example of how powerful FP 2003 it fails completely for me. Now if he'd done something I couldn't do in the WSS UI I might be more interested !
I have multiple sites with different users for each site. Using the set alerts for all sets alerts for all users even if they don't have permission for that site access. Is that because it is pulling in all users from the AD? Also is there a way to shut off the email notification when I set up the alerts initially? Frick
Frick, if you take a look at the code, you'll see I fetch all the users from the root site. You could change the code so the users are fetched from the current web instead. Drop me a line if you need further assistance. I don't think that you can prevent an email...
Jan, Yes, can you please assist me with the code so that it doesn't fetch all users from the root side. I looked at all the code using Front Page and as I am a novice decided I better defer to a higher power. Thanks
Frick, you should download the source code and open it with Visual Studio...
Very nice webpart! Something I have been doing is creating an alert, but changing the e-mail for the alert to a distribution list. I have not tested the full implications of this, nor is it somethign I have verified was supported or anticipated, however, the alert is generated and delivered. Just a thought. Thanks!
I fear that some messages will get overwritten using the plain datetime mask. I hope the UTC one will suffice!
THANK YOU! This really works! Keep up the good work! Thanks
HOW TO LINK ONE SOLUTION WITH OTHER SOLUTION
What about using a column from another list not with the same site as a lookup column in a local list; now that would be very useful. I am sure it's possible.
Great webpart!! but I have a problem with Allows deletion of a specific alert. The List box always return a null value , and alertList.SelectedIndex always is -1, it´s like the selectedIndex lose its value. any solution? thx
Hello, Jan. I'm newbie developer for SPPS 2003. I've studied some Microsoft MSDN examples about programming webparts and implemeted these examples in my SharePoint Portal Server. When i looked for more practices, i found your "Lead-it UserAlerts" webpart. By the way, its very useful webpart, thank you for developing it. But i failed to run your webpart on my SPPS. Either installing webpart by means of MSI-pack or installing Leadit.SharePoint.Administration.dll manually resulted the same - the whole webpartpage with your webpart failed to open with "Access denied" error. I tried to log on to SPPS as two users: 1. build-in administrator of w2k3 server, who is also administrator of Sharepoint Portal Server. 2. domain account, who is member of Administrators group on w2k3 server and member of Administrators on Sharepoint Portal Server. Both users had same error: when i try to click on the link to the webpartpage with your webpart i get dialogbox, asking my username and password. After 3 attempts to log on it brings me page with "error. access denied message". I studied code of your webpart and after commenting big parts of your code finally found out, that line: foreach(SPAlert alert in web.Alerts) gives me "access denied" error. If i comment this line webpart renders with message "To use this webpart you need to have Site Administrator rights". Jan, but I AM administrator, am not i? I am administrator both of w2k3 server and SPPS 2003. Jan, do you have any ideas whats the reason of this error? Your help will be appreciated alot.. Or.. could you advise me nice web-forum for webpart developers?
Has anyone resolved the issue of using the KeepAlive=False workaround in conjunction with WSE?
Hi I found the same problem that Martijn de Groot have. I do same proyect in C# and VB.Net. The C# work but vb don´t. any ideas to resolve it? thx!
Fontecha, Martijn: I don't have an idea to resolve this... :-(
Two undocumented BizTalk Server 2004 tricks
Jan, I worked through your code. There is one simple problem. When try to But I stack in one place. "alertList.SelectItem.Value = null". can you give me any suggestion for this problem
Sorry for the previous post I worked through your code. There is one simple problem. When try to delete specific items. "alertList.SelectItem.Value = null". can you give me any suggestion for this problem
Hi again Thx Jan for this webpart I resolved the problem with Allows deletion of a specific alert setting EnableViewState = true
A good approach :)
Is the reverse of this possible? Receive multiple files and append the output to a single file and still end up with a well formed XML document? I set up your splitting example and am tring to re-combine the split documents in the send port into one file.
I have the samo problem as dustin... Still trying
Jan continues to show just how amazing he is. Today I read on his site that he has created a new way to generate an RSS feed that polls your sharepoint lists to display newly added information. Very cool and extremely useful. We need more developers like him in this world of ours. He has the day off and uses it to work on pet SharePoint projects. Great job Jan!...
Take Outs for 15/16 April 2004
I finally did it! The proble was the version in the assembly file and web.config. I assigned both with 1.0.* and that didn't work. Then changed it to 1.0.0.0, recompiled, re-gac and it's ok! [Portuguese - Portugues] Finalmente consegui! As versoes no assembly file e no web.config estavam mal definidas. Estavam ambas com 1.0.* e deveria estar 1.0.0.0. Recompilei, voltei a inserir no GAC e funcionou.
You can upgrade any MSDE databases to SQL Server with the upgrade wizard.
Jan Tielens has released What's New Rss Feed for SharePoint ...
Cool web part!
How do you maker a dropdown menu in navigation bar ?
je veux avoir cette version parce que msn 6.1 ne correspond plus a mes besoin et je veux etre up to date!!
I found that the NTFS file permissions on the DLL in the bin folder was not set properly. I made sure to check "Inherit permissions from parent" so that IUSR and IIS users were given proper rights. Hope this helps those of you with the "not registered on this site as safe" error.
Jan, I have an issue where a particular site and it's sublevels aren't showing in the tree when I'm on one particular site (2nd level). My structure: Sites: Internal: 2003 Planning: Sub Site 1: Sub Site 1.1 This tree usually shows on the when I click "Start from root", but DOES NOT show when I'm in the "2003 Planning" site. Why this one site causes the whole site tree to not show, but if I go into "Internal" (above) or "Sub Site 1" (below) the whole tree shows for all levels?
I'm having the same problem as Frick (PDFs not showing in the What's New webpart).
Chris 1) Are you using SharePoint Portal Server or Windows SharePoint Service. 2) You should use the List fields property to tweak the title of the item in the list.
Hi Jan, I have exactly the same experience like Floyd. I'm getting access denied error when the code comes to foreach(... web.Alerts). I'm logged in as administrator, web.CurrentUser.IsSiteAdmin is true. How can I find out where is the access problem ? I'm a newbie in this. Thanks for help.
thanks for your time invested in writing your blogs!
try to replace CalendarControl_ascx with DemoUserControls.CalenderControl
Is possible to change views during the OnLoad event?, thanks.
Zwei neue Tools f
Daniel, can you elaborate a little bit more what you are trying to do?
An interesting hickup. I was entering and amending data using the site administrator but all the items thrown up by Rss Feed for SharePoint while specifying the correct change in the correct place at the correct time said that all the changes were done by Esa Viitanen - this is the person who is second on the list of Users for the site and he has only Reader rights! (The name and password needed meant that I couldn't use it in Tim's RSS Reader web part but RSSReader 1.0.88.0 was fine with this too.)
Thank you! It works. I now have a VB User Control and a C# wrapper. Then also you will have to replace CalendarControl_ascx with DemoUserControls.CalenderControl. It then works fine. I assume that a VB wrapper will function the same way. Thanks!!!
dfsdafsdf asd fsd sddf s
Does anyone have the solution for the C++. pSoapClient->MSSoapInit2( _variant_t(g_bsWSDLFile), _T(""), g_bsSoapService, g_bsSoapPort, g_bsSoapNamespace); this call fails when g_bsWSDLFile is "https://.../.../x.jws?wsdl" its successful when g_bsWSDLFile is "http://.../.../a.jws?wsdl" I tried to use the ConnectorProperty of "UseSSL" but that's possible only after my initialization succeeds. Any help is greatly appreciated. Thanks
hi i m using window 98 b despite no of attempt i fail to download 6.1 version of msn messenger plz help me in this respect bye
I just can not get this thing to work. Knowledge level is low on my part. Can anyone point me to a step by step guide?
I think we should switch to european standards, Bye bey america, pushers of Freedom !
Which European standards are you referring too Paul?
i want to dawnloade the new vergion
WAT IS THE NEW VERSION OF MSN NOT MSN ^> COZ I ALREADY AVE DAT AND IT WONT LET ME ON> SO WATS THE NEW ONE. STRESSSSSSSSSS
Hi Jan, Thanks for a nice article. I have created a library of functoids, and setup resource bitmaps for them using 16x16 pixel bmps generated using paint. These were added to the resx file using Lutz's Resourcer. Basically everything works fine except, that the bitmaps do not show up in the toolbox. The name is there from teh resx file, but there is a blank space where the bitmap should be in the toolbox. BUT, if you drag one of my functoids onto a map designer, then the bitmap is dispayed fine. It is also displayed fine when you use the Add/Remove items on the toolbox, when you click on the functoid in the functoids tab. The name info from the resx file changes as I change the strings in the resources, so i know it is using the latest versions of the resx. Your example uses the FUNTOID_BITMAP ident for the resx file, I have just used the filename of the file as it was added (i.e. "VFBM01.bmp") But I tried using it the way you describe but that didn't seem to fix it. I am puzzled, as the bitmaps seem fine for most of the parts of the tool, except the toolbox itself. Any help would be most appreciated. Thanks, Chris
This value of the string in following line should map with the name you gave it in the resource file: SetBitmap("ENCRYPTION__BITMAP"); Could you verify that?
There may well be times when this info is good to know about...its always good to know multiple ways to achieve the same thing... well done!!
Hello Community, after days of unsuccessful coding, installing and testing I'm stumped: I downloaded the "Essential Webparts" and included the What's New-Webpart in my WSS-Website. Everything works fine ... as long as the user has the permissions to view the linked content (e.g. a Document Library or a List). But if I declare the List not to be accessible by "Readers" and a Reader tries to load the page containing the webpart he get's an error-message ! :-( So - as a programmer - I downloaded the sourcecode, compiled it to the bin-folder, set the right entries in the web.config-File ... <SafeControl Assembly="NewEntries, Version=1.0.0.0, Culture=neutral, PublicKeyToken=70c5e611fdfc59be" Namespace="NewEntries" TypeName="*" Safe="True" /> [...] <trust level="Full" originUrl="" /> ... and got the same result: only a user who can surf to all the (normally) 10 entries in the What's New-Webpart can view the whole webpage ... all others can't use the site containing the webpart anymore. :( The strange thing: the C#-code asks if the logged-in user has the permissions ... if(list.Permissions.DoesUserHavePermissions(SPRights.ViewListItems) { [...] } ... but it seems that exactly this method raises the exception !?! How can this be possible ? I coded an own webpart ("NewEntries" - see above) containing not much more than this instruction ... and it doesn't work if I'm not logged-in as admin (I have a recently added Document Library which gets linked in the webpart and which a reader "Sebi" should not see). Please help !!! I'm pressed for time and I have to get it working as soon as possible ! Nice greetings and thanx in advance, Sebastian
I have the same problem when using the part in a Portal Area. It works fine on WSS Sites. Is there something I can do about this?
the new version
Whan I created my library, I used Lutz's Resourcer. Using this tool, the name of the bitmap resource is automatically set to the filename of the bitmap e.g. FBM01.bmp. I left it like that, but changed the functoid code e.g. SetBitmap("FBM01.bmp"); I did wonder whether it didn't like the ".", so I also tried calling my bitmap resource FUNCTOID_BITMAP instead of FBM01.bmp and changed the functoid code e.g. SetBitmap("FUNCTOID_BITMAP"); But it didn't change anything. The strange thing is that the bitmaps do appear when dragged onto the designer and also in Add/remove items for the toolbox...?
thanks for that.. That looks much better when I'm going to show the prove of concept of my Biztalk 2004 setup..
I need a GUID in the output file name that can also be accessed inside the orchestration. I tried using %MessageID% in the output filename and then using BTS.MessageID in the orchestration. But the two GUIDs are not the same. This might be because when a message is sent via SEND port, a copy of the message is being sent and hence it gets a unique, never before seen GUID. Any ideas, workarounds ? I need this functionality for the following scenario: When i receive a file X, I am trying to create a message that says "file X has been received and renamed to GUID-X".
I'm only going to comment things that are NOT going to be implemented in the next version of .NET Framework. 1. Property ReadOnly is good for readablity. It should be "C# is missing Readonly". 2. CType is used in VB (compared to (type) in C#). Which is better is a matter of taste. 3. VB is missing a way to turn the background compiler off. In large projects it can get very slow. 4. C# can use unsafe code. Good or bad? Bad if you ask me, because you should avoid using unsafe code. 5. VB has optional parameters. Good or bad? Not sure myself so I try to avoid using them (uses overloading instead), in fact I haven't used them so far. 6. C# is missing WithEvents. In my opinion WithEvents is great for readabilty and fully sufficient in many cases (not all though). 7. C# is missing implements object.Method. In VB you specify which method that implements an interface. Great for readabilty and flexibility. I'm sure there is much more, but that will do for now.
Can it support VC++ .NET. I have couple VC++ .NET projects. I want to use it to generate Nant script.
I am always getting: "There was an exception reading the RSS Feed. The remote server returned an error: (401) Unauthorized." I can browse directly to the feed (http://testportal/_vti_bin/whatsnewrss.aspx) and that displays the xml code fine. But I tried it in the Lead It Rss Feed web part and I get the above message. I have set authentication as shown above in the screenshot for the _vti_bin virtual directory, and even tried Everyone permissions on the two files, but still not luck, any ideas?
Very useful webpart and exactly what was missing in the new version of WSS! I'd like to port the alert names to other sites we administer, without having to add them back in manually--is this doable? Plus I concur on the request to delete/add names in bulk vs one by one.
Some Articles About Creating SharePoint Webparts.
Epack, this can be done with some coding.
There is an updated version available here: http://weblogs.asp.net/jan/archive/2004/04/26/120508.aspx
Thank you Jan. I am wondering if I can display that list as a web part, so I can sort, filter or even modify the data (which should affect the source list on the root site).
Daoud, you can't influence the source list by using this method. Although you can add sorting and stuff like that, like a view.
No VC++ support...
A few users have posted the message "A Web Part or Web Form Control on this Web Part Page cannot be displayed or imported because it is not registered on this site as safe.". Unfortunately I have the same, althought I have followed the recommended steps. Any ideas what to look for? TIA, Paul
To answer my previous question, I got it working despite the initial message "A Web Part or Web Form Control on this Web Part Page cannot be displayed or imported because it is not registered on this site as safe" by editing the <SafeControl Assembly="Leadit.SharePoint.Essentials, Version=1.1.0.0, Culture=neutral, PublicKeyToken=6f708acd0ffbe583" Namespace="Leadit.SharePoint.Essentials" TypeName="*" Safe="True" /> string. The one above is correct, but on the initial page it refers to an earlier version. Now I have the control working it looks great. Regards, Paul
Jan, I was attempting to use the What's New part and ran into a bug. I have a list on my site named fpdatasources. When the part tries to access the DefaultViewURL property, it causes a NullReferenceException. Ping me if you need more info.
Paul, a quick work around would be to exclude this list by using the ExcludeLists parameters. Thanks for the information!
SharePoint has simple 'out of the box' workflow capabilities, but there suddenly seems to be an abundance ...
That is the version I have. I removed the Old Essentials pack and installed the new one. I can not get that RSS Reader to read an RSS feed from whatsnewrss.aspx, but other news Standalone RSS readers will challenge for authentication and read it just fine.
If you want to consume the What's New feed to display it on a SharePoint site, I suggest you use the What's New webpart (also in the package). This will prevent authorization problems and gives you the same result.
Well Jan, what about putting whats new from one site on another site in the form of RSS webpart? That was the goal. Your webparts are nice, I am not saying otherwise, I am just pointing out, your RSS reader will not read your RSS Whats new web service. When one is testing both, esspecially the whatsnewrss.aspx feed it seems logical to just pop that in the already installed Lead It RSS reader webpart to test it out. If it won't do that by design, that is fine, I just wanted to check with this forum to see if anyone else was doing it and maybe I was doing something wrong.
I thought of the same thing. However, the part never renders for me to set the exclusion. I wrapped the entire RenderWebPart method in a try/catch block (and swallow the exception) so that the part displays. Then, I entered the exclusion.
Hi I am new to Biztalk and would appreciate if any body has the posting on how to create the orchestration of this sample. Regards Nina
When I install this, I receive an a warning that it was unable to modify my web.config file located in c:\inetpub\wwwroot, however I do not have my site files located in the default directory. What lines do I need to add to the web.config file for this web part to work? Thanks!! Jason
Thank you for reply, Jan. Is there is a way to influence the source list using some method; I mean how can I create a copy of any list from the root site with the ability to control it from the subsite?
I don't think that will be possible. Unless you write your own webpart.
The RSSReader webpart then needs some small modifications so it passes along the credentials to the RSS Feed. It's possible, but it will require a few lines of code...
Jan, great Webparts! I have folders in my document library. Unfortunatly changes in these will not be displayed, only the folder that expirienced changes. Any way to see the documents?!
Jan, you might want to look at <a href="http://www.k2workflow.com">K2.NET</a> which is a workflow package offering complete integration with SPS (and BTS and a few other packages). Obviously your pet project will be far cheaper but hey we like using workflow tools right? :-)
Well that hyperlink came out well. Try http://www.k2workflow.com :-)
Duncan, I'm familiar with K2.NET. As you already mentioned my Workflow engine will be far more simple (and for free). It's aimed at simple workflows where K2.NET is to expensive.
Sounds like a great project. Keep us informed how its going. I've been looking everywhere for a cheap\simple workflow routing system, haven't found one yet.
You might want to check out Scot P Hillier's SharePoint book, it has a simple work flow engine in it.
Jan, Thanks for providing great tools for WSS! I had a small problem--initially I installed essentials 1.1.1.0, then today saw you had an update 1.1.2.0. I neglected to uninstall the original before installing the update--everything works, but now I have duplicate entries for all 4 of the web parts in my virtual server gallery. I then tried to remove both and only reinstall the update but still have duplicates. Know how to remove them? Thanks in advance!
This is great -- who knew it was so easy?! Thanks Jan. Does anyone know how to display the contents of a document library so that each row contains a link to the document? I am doing it "manually" by editing the XSL, but this seems like something WSS/FrontPage would do automatically.
Okay, I guess it was an easy question...tracked down your original installation instructions before you created the .msi package and discovered the part about the wwwroot/wpcatalog. Removed the duplicate entries there and everything is fine again. Is there anything else I need to remove/delete/change?
George: You can uninstall every version, remove the entries from the web.config of the SharePoint site, and delete the corresponding .DWP files in the WP_CATALOG directory. If you have any questions, send me an email using the Contact form.
I am having the same problem also. When I incorporated the Keep alive chnage it gives me access denied error. I would rellay appreciate if any one help me out on this access denbied issues.
Thanks! just what I was looking for =)
Just a question on the List Permission issue, couldn't just use the ListsForCurrentUser setting? So: foreach(SPList list in web.Lists) becomes: SPListCollection listColl=web.Lists; listColl.ListsForCurrentUser=true; foreach(SPList list in listColl) I don't know if you gain performance but code is nicer... Cheers, Thomas
great ;+) EROL
Hi Jan, thank you for pointing me to my blog. I had lost the url some time ago. Since other people are doing a great job publishing interesting stuff like this one, there is no need for my boring publications. Greetings, Raf.
I have worked on this problem for two days now. Hoping you can enlighten me. This works fine on most lists.... however I have a situation where I have alot of lists that use lookups. I can't get any of them to work that have a lookup field in them. I get a "dataviewwebpart" seems to be causing a problem error. The thing is... it DOES display the data when viewing it from FP... even in preview mode. But not in browser.
Stan, you're having a strange problem... Are you using the same account to view your page through the browser and through FrontPage?
Yes. However, this is intended to be a public page... with anon access.
Maybe someone from the newsgroups can help you out...
Will Check there... thanks for your contributions to the Sharepoint Community. btw... I think I may be trying to use Sharepoint beyond it's intended scope on the particular project anyway. thanks again...
If the envelope arrives via MSMQT and contains different document schemas how to I configure the receive port bindings in my orchestration. Does I set up a receive port for each document types within the envelope ? Do I set the port binding to use MSMQT or direct ? Finally Does Biztalk submit the envelope contents in the order that they appear and is there any guarentee that it will finish processing them in the order they arrive ?
We have found a workaround for settings KeepAlive to False with WSE (tested with WSE 1.0 SP1). We use reflection to get the underlying HttpWebRequest object through the SoapWebRequest.Request (undocumented and internal) property... That's quite ugly, but that works... Instead of directly modifying the wrapper class for the web service, we prefer subclassing it as follows : using System; using System.Net; using System.Reflection; // Web service reference entered in wizard was "MyWebService.MyWebServiceWse" using MyProject.MyWebService; namespace MyProject { public class MySubClassedWebService : MyWebServiceWse { private static PropertyInfo requestPropertyInfo = null; public MySubClassedWebService(){} protected override System.Net.WebRequest GetWebRequest(Uri uri) { WebRequest request = base.GetWebRequest(uri); if (requestPropertyInfo==null) // Retrieve property info and store it in a static member for optimizing future use requestPropertyInfo = request.GetType().GetProperty("Request"); // Retrieve underlying web request HttpWebRequest webRequest = (HttpWebRequest)requestPropertyInfo.GetValue(request, null); // Setting KeepAlive webRequest.KeepAlive = false; return request; } } }
For your first issue (passwords in plain test). Check out aspnet_setreg.
We just started getting this problem talking to a partners webservice. We had a problem with our own webservice with keep-alives - where load balancers would interfere with the keepalive and hose the connection. Could this be another form of the keepalive problem?
I am having problem getting the Request object from the request object. The return value of request.GetType().GetProperty("Request") is coming up as null. Am I doing anything wrong?
I think may be I am using WSE2.0 and this property available.
Thanks, EROL
Hey Jan, you're doing a great job for the community, and I'm glad that you make such solutions. From a professional point of view, I rather like more the box-products, but hey perhaps this is an opportunity for you ? Let's commercialize it as if it's a mass-consuming low entry workflow starterskit ;-))) perhaps I'll even have some potential buyers for you. In addition to your project name, I make the suggestion that the commercial name would be 'Pet Flow' :o Just a last take-away : spare-time is not free time, it's quality time for yourself, your friends and family ... it's even more expensive then a day of consulting. Cheers mate !
Re: What's New I'm still getting the problem that the wrong person is identified as having made the change (rather than me as site administrator). The name has changed but only because I added a user to the site and he is now second in the list of users. (It always says the second on the list of users has made the change).
I've done all that you've described. However I have this poblem that I am getting one file(exact copy of the input file) as the output. I would like to have two files (two customers) as the output. The only thing i've done differently is that instead of an orchestration, I've added a send port and subscribed to all messages arriving at the receive location.
Create Alerts for others
that does seem like a serious scalability killer... couldn't you write the locked files to a sharepoint list and process the list every once in a while (i.e. on startup start a timer...)?
Nice idea! Although this would require some additonal coding (no problem) but also the need for an extra document library. I'll consider it, thanks!
The Message objects can be treated as DOM objects. We wrote a simple .NET class to take the Message as parameter, and return a string (InnerXML). You could then pass this to your send port. HTH, Rois
You just keep going, don't you? Nice work! Greetz Tom
Ahhh, this gives me a HUGE clue as to issues I've been seeing with the out of box web parts! I have many questions as to why pawns aren't shown sometimes for offline users. Sounds like ShowOfflinePawn is dropped every so often.
i hope this contains some essential part of the code only. though i tried to compensate the rest of the code as done in the defaultWsdlHelpGenerator.asmx it is giving some compilation error on get { return serviceDescriptions[0].Services[0].Name; } can u please post a working listing with regards, Raju
Great post, Jan! Just to clarify - this still requires that the end user have Office 2003 installed to get the presence information, right?
Yep, as well as Messenger.
I want this document
I saw this in the HTML and have been experimenting using it in my non-Sharepoint webpages too (i.e. intranet webpages that know about user identities), as long as I load the appropriate JS pages in the HTML header (owsbrows.js, ows.js, menu.js and ie55up.js) then I can use this from any webpage. I don't know what the MS situation is with doing this tho - the licensing position is not obvious, so I haven't actually put it into production yet, but the wow factor is impressive. The next stage, I know, is to replace those webpages with Sharepoint, but this is a quick win. Anyone know what the legal position is on calling this code from non-Sharepoint generated pages ??
Checkout SpsDev.Com who are focussing on providing components to extend SharePoint Technologies ...
I've run into the same issue as Paul Ibison - followed the directions, but can't apply the webpart. I've used SPS01 for almost 3 years, but am completely new to SPS03/WSS. How can I resolve this issue?
MUCHAS GRACIAS to Skeup&Zeb. The original MS fix did not work as we are using WSE, however Zeb's Reflection fix seems to make everything right in the world. Thanks!!!
Outstanding. I've been seeing too much red and didn't find anything on KB to solve it.
Hi Jan, I downloaded your beta sample and have followed all instructions to the T. I think the sample is not complete in that I dont see the customized Task Pane in Word which is shown as per your video. The other thing is there were three document libraries in your video - I notice two. Am I missing something?
And when do you think to plan your first release ?
Beta is now available: http://weblogs.asp.net/jan/archive/2004/05/05/126614.aspx#127000 I'm planning to add some more Action types, so I expect a 1.0 release in the next few weeks.
Could you verify that you are using Office 2003?
Subj: Splitting inbound flat file into outbound multiple XML messages... Hello All I have an inbound text (flat) file containing records on each line having values separated by a char '|'. My goal is to process each record in the orchestration after this inbound document is processed by the pipeline disassember. I had looked at the Jan Tielens' instructions to split a XML file to process each XML message in the document and envelope fashion. I could make it work from XML to XML. But my need to process the input flat text file instead of inbound XML file. Do I need to create end to end disassemblers in the pipeline (Pipeline designer allows it but it does not work runtime or am I missing something) or write the inbound text file to a interim port in and then have a other pipeline to process this file and follows Jan's instructions to complete it. ? I would appreciate your reply. Regards Ravi
I've added the breadcrumbs to my site with no problems using the .msi file. They display, however, they do not work. First of all it only displays the top level so any pages that I drill down into it still only displays one item for the top level. Secondly the one that is displayed does not act as a link. This may because it is only showing one level and as more levels are visible then they become links. How do I get it to display levels as I drill down?
This may be my problem. I'm trying to use this in a document library. I have a document library with several layers of folders so this is the perfect place to have breadcrumbs. Since the document library is essentially on one page (allitems.aspx) would this be why it doesn't work for me? Is there any way to display some sort of linkable breadcrumbs on a document library that has a lot of depth?
Great, thanks, EROL
Hi Jan, This looks like a great tool. Will the source code be made available?
Matt Once I release v1, you can apply to join the GotDotNet Workspace so you can contribute to the project.
Schwank, When I am trying to execute the follwing line requestPropertyInfo = request.GetType().GetProperty("Request"); The requestPropertyInfo does not contain any values. Looks like there is no request property. Am I doing something wrong
I am having some "blog envy" How can I create the same blogs that you have in sharepoint.. I have been looking on line... do tell! -karen angelli
Great job again Jan!! I really like how much attention you pay to the installation instructions...this is an important piece that can often be easily overlooked. Way 2 Go!!
it is truncating some part of white space, i am want o truncate all last white space...is it possible!!!! Nar-
Hi, can this tree web part include other object such as the doc libraries, Lists othre than just sub sites?
Joe, no, not at this point.
First, let me say this looks great! I see a lot of workflow stuff out there, and it always seems centered around Document Libraries. Is it not possible to create a default or custom list and do workflow also? Also, non-related question, but maybe someone could answer it. Our alerts in Sharepoint show the list item title, except when we use an Issues list, then it says Item ID. Can't find any info on the net anywhere. Any idea why? Thanks, Scott Hannan Ava.nu Media srh@ava.nu
I did not use the method above exactly as indicated, I stripped the class inheritance and added the code directly to my overridden GetWebRequest method. Code is below... protected override System.Net.WebRequest GetWebRequest(Uri uri) { PropertyInfo requestPropertyInfo = null; WebRequest request = base.GetWebRequest(uri); if (requestPropertyInfo==null) requestPropertyInfo = request.GetType().GetProperty("Request"); // Retrieve underlying web request HttpWebRequest webRequest = (HttpWebRequest)requestPropertyInfo.GetValue(request, null); // Setting KeepAlive webRequest.KeepAlive = false; return request; } Make sure you include the System.Net and System.Reflection namespaces as well. Otherwise the provided code worked brilliantly for me, using WSE 1.0 SP1.
intresting and funny
Scott, at this point SharePoint does not support to handle events of lists, so you can't do workflow scenarios like this. But I heard event handlers will be available for lists too, in a next version of SharePoint.
Hi all! I'd like to solve exactly the same problem. But whatever I try it doesn't work. I am trying to read a webpage using the HttpWebRequest methods. When the URL is not secured (http://) it works fine, using the HTTPS protocol I get the "The underlying connection was closed: Could not establish trust relationship with remote server." error. I implemented the class TrustAllCertificatePolicy like shown here. But also this did not help... Is there anyone with another idea?
Jan, Your User-Alerts web part is very good. For my current assignment, I have to write a web part that displays all the areas within the portal and user should be able to select an area from that list and set alert (including contains keyword,etc) for that area for the current user. Can you please let me know if this is possible as I do not see if I can create alerts for an area within the portal. I could see creating for lists though.
I've seen this happen when I call web services with proxy servers. We used the same approach mentioned above with the exception of changing the protocol version instead of setting keep-alives. webRequest.ProtocolVersion = System.Net.HttpVersion.Version10;
I have a similar problem with some of the folks above. Somehow turning keepalive off seems to disrupt my authentication(Windows in my case). What is WSE and is this the solution to my dilemma?
I have installed these great search & breadcrumb's, only problem is that search keep's returning 404 and breadcrumb shows only the site it's placed not the trail to top. Can anyone help me on this? Crateful allready.
After adding a new link in the Links list, the url and description will be the title in the What's new web part. Can I configure it so that it only displays the description part? Thanks.
Will this web part work on the home page of SharePoint Portal Server instance, and than interate through all the lists in the portal? If not, is the code readily extensible to this? David Turton (Maryland)
How would I go about including the processing instructions in Biztalk 2002 ?
In reply to Paul O'Donnell's problem, for both the schema's (document and enevlope) remove the target namespace i.e. the target namespace should be blank. Instead of using the xsd import, set the set the Data Structure Type property for the Customers node to “xs:anyType”. (you won't be allowed to use the xsd import without namespaces anyway). Now it should work fine. To test, you can use the xmldasm.exe which can be found in the utilities folder in the sdk.
I learned programming on C64 too and want to share this two great memories that come to mind when I read this. 1) I remember myself buy magazines that contained pages full with lines of Basic, that I typed over evening after evening, just to see what it does. I did this with the C64 on my knees with my TV about 50 cm above my head. And nobody heard of RSI back then. 2) There was this dutch radio program on sunday evening called Hobbyscoop (if I remember correctly) that broadcasted programs on air that you could record on tape and run from your C64 (which I never got to work, of course, not even after changing the head of the tapedriver with a screwdriver). Great thing was, sunday was the day I visited my grandmother and I was usely in the car around that time, actually listening to this broadcast, going on for ten minutes. Great memories. Thanks for getting me in this nostalgic mood ;-).
This was/is really a nice machine and it's still the best selling home computer, 30 million C64 has been sold, amazing!!! (comes from Guiness book of records 2003)
POKE 53280, 0 POKE 53281, 0 POKE 646, 6 That was the only way to go. ;-) It worked on 1 freaking MHz and you could still use interrupts to gain full control over the electron beam drawing the picture on TV. Loved it to death!!
Damn, this is just great! So many great memories... I had a C64 when I was about 12 years old, when I had my first code-encounter. ;-) Some day, I got hold of these printed pages of the game "galgje" (I don't know the english name) and I typed it over (more then 4 hours) on my C64 but it didn't work :-(. I will never forget that! ;-) That joystick is mine!
I had an Oric-1 (http://www.old-computers.com/museum/computer.asp?st=1&c=180) while all my friends had Sinclair Spectrums. This meant while they were sharing tapes of the latest games I was programming for myself in Oric Extended Basic. How happy was I years later learning Visual Basic 3 to find out the syntax was all but identical.
I want one too! my first machine was a vic 20 with a rom cartrige that plugged in the back, jupiter lander. Great game though.. and then C64. Never thought about it before, but I guess my first programming was on the C64. *crosses fingers* for Last Ninja 2, Ghostbusters, spyhunter, Wizball, Stunt Car racer... so many..
Very cool!
Dear Sir, I am getting Error : Login failed for user 'NT AUTHORITY\NETWORK SERVICE'. (Error code: 18456). How to ovecome this sitution pls help me mail me : prabhakar@arrowpointtechnologies.com gprabhakaran73@hotmail.com
Great ! Very usefull thing. Can we take part in your project? Dmitry Smykalov IT Manager Russia alienX@mail.ru
I have a problem when trying to using: xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" ); If I try to attach a french character ie ç. The server can't seem to understand it. Please Help!
Thanks for the web part. I have one issue. At the end of installation there was an error. I checked the log and it stated: Error: Config file: 'c:\inetpub\wwwroot\web.config' for virtual server 'http://spstest01/' is missing or appears invalid. Could not apply required CAS settings to this server. 5/14/2004 10:33:21 PM: Success: Installation Successfully Completed Problem is that my Inetpub is on the D partition not the C partition. What should I do? By the way, the web part still seems to work.
Dear Jan, I'm a newbie in WSS. I'm studying the Workflow Lite and have some problems with: <ns0:Action Type="CREATEEVENTITEM" Parameter1="Eventlog" Parameter2="type" Parameter3="comments" /> Could you pls help? To be honest, I don't understand the work of Action Type="CREATEEVENTITEM", esp Parameter1 and Parameter2. With Parameter1, in my opinion, it's the name of the Event Webpart in the page. E.g: I add a Event webpart to a page and rename it to "MyEvent". Then I assign this to Parameter1 like this: Parameter1="MyEvent". Is it correct? I read the sample.xml file and see that the event type can be: -Document approval declined -Document submitted for review -Document approval accepted So where does these types come from? Many thanks, Toan.
During development I often use System.Diagnostics.Trace.WriteLine in expressions and SysInternals debugview to see what's happening. Works fine !
After adding this webpart to SPS 2003 portal areas the areas became inaccessible even though I have administrative rights. Had to go in and manually remove the webpart from the area xml file to recover. Just thought I would pass this on. I don't know if we missed a step or something.
I would like to add this as a static web part in a template. What would the connection code look like?
I'm a beginner to all this, so maybe this is a stupid question, but when I do this, there is no presence icon until you mouseover? Is there a way to have the presence inciator there regardless?
Is there a way to change Alerts format. I want to be able to send an alert showing all data elements instead of standard format.
G Man, I don't think so...
Jan, you're a life saver! I've been wrestling with STS for the past 2 days and with your article I was able to get it up and going. Geez! Thanks! -Jason
I have a question, is it possible to trigger an action after a few "Property names" have change? Like if I want 3 people to "Sign off" on a doc before moving it to a new library and I have 3 different columns set that need to be checked. Is that possible? Thanks a lot man this is great... Chris (christiankelly(at)gmail.com)
Hey Jan I'm trying to install your webpart, I've tried to install your Leadit.SharePoint.Essentials 1.1.2.0 web part. It's registered as a safe control but when I try to drag the WebPart into the WebPart Page I get the error, "Cannot add Web Part to the Web Part Page. For more assistance, contact your site administrator." The only thing is, I am the admin :-\ can someone please help me out. I you want drop me an email (tom.caffrey@cromptoncorp.com) Thank you in advance.
I tried to use this class in the orchestration, but the messagebox is not displayed on the desktop? Do I have to do anything else? Thanks
And don't forget that 'forgotten' pdf icon you have to add to the icons.xml file :)
Hello all, I've installed the Essential webParts because Breadcrumbs and Navigation are excellent but I've got a pretty big problem. I used the MSI file and let it install all. I said Yes to installing it in the GAC and Yes to the XML security adjustements. Everything works fine for all my local machine users who visit the site but none of my domain users to the WSS web can now even access anything as their username/password is always refused. My guess is that only Local Users have access to the GAC environment but no Domain Users do. What should I do guys ? I'm not too comfortable with this whole GAC concept. Thanks, Philippe
Hi, Jan: Yes, my implement of SharePoint Workflow Engine got many ideas from your Workflow Lite, and in a previous article in my blog, I introduced your works :). (http://blog.joycode.com/kaneboy/posts/21549.aspx#21565) Thanks you for your perfect ideas and implement. And sorry for my poor English. :)
Hi Jan! I'm also a newbie in Sharepoint. I tried using your Workflow Lite and followed your installion instructions exactly. But when I went to the step where I will enable the event handlers for my document library, there was an error. As seen in your video, I copied the assembly name and the class name in the readme.txt and paste it on the Assembly Name field and Class Name field, respectively, on the Document Library Advanced Settings page. Please help me on this one. I badly need this thing for my work. Thanks! Eugene
By the way, this is the error message that I got when I tried enabling the event handlers for my document library.. Could not report event for "Editing" in "Editing" because loading event handler assembly "Leadit.SharePoint.Workflow, Version=0.1.0.0, Culture=neutral, PublicKeyToken=dd064a5b12b5277a" failed. File or assembly name Leadit.SharePoint.Workflow, or one of its dependencies, was not found. I don't what this means. I already followed all the steps in the installation instruction, except that I didn't refresh my config settings using IISRESET (as said in the instructions) because I don't know how to. Could that be why I got the error?
Christian, this is not yet possible. But it's a great idea! I'll take a look how I can implement it. Eugene, I've send you an email with some questions.
No problem!
Not able to use it ..please help ..did all steps but don't know what to set in sample.xml and where?I have my own document library name and document names.
Jan and Kaneboy, Both of your engines are very good simple implementations and people can start using it. Kaneboy code is using reflection. Do you get a performace hit? Maxim [www.ipattern.com do you?]
Our device proxies requests and can fix this problem without a code change on your end. Further our device provides some defense against certain web application level attacks. If changing your code is not a short term fix -- meaning it will be a while to deployment but was needed yesterday -- you can investigate proxying to our device at http://www.fastroot.com -- there is a monthly charge for this. Contact Terry Howerton via email -- terry@fastroot.com Out of curiosity, what app server or web server are you sending the requests to that causes this error? Thanks, Eric Hauk
So I was wondering why you were bothering to tell us about the pdf IFilter (as it ought by now to be old news) and nearly about to skip the rest, when I saw the last sentence. Now *that* was new to me! Thanks, Jan. (People looking for a pdf icon and where the icons.xml file is can search the WSS FAQ - www.wssfaq.com - for "pdf" or "icons" which will give them the item.)
Wondering if anyone had the soltuion for John's post - "What about using a column from another list not with the same site as a lookup column in a local list" trying to setup a list on my main site (which has restricted access) and then use this list in a lookup column on 2 subsites
Hey Jan have you thought about doing a collapsable version of your navigational menu. I have about 100 sites and it takes up too much room to use your navigation one unless of course it was collapsable. If you do this or plan on it, please contact me. caffrey@hartford.edu (I'm using your breadcrumbs and nav right now, and they are working perfect.)
Hi Jan, Great work! Also the video's you produce are very good, now you can see directly what you envisioned. I have some questions: 1. Why do you use the parameter1, parameter2, ... construct, why not have the amount of parameters as needed or is this to have a simple schema? Wouldn't it be beter to have separate tags for the different actions? 2. Is it possible to extend the functionality to add an entry to any list in any site, and to any listing in any portal area? Would be great to set any property in those lists/listings to any area. 3. Is it possible to make an action that calls a function in an assembly? Would be great if you could specify for example the assembly, the class implementing a defined interface, and in this class a standard function to be called, and finally two parameters: the url of the source document and a string constructed with the field replacements you already defined. This would give infinite possibilities! 4. Could you make the sourcecode available? We could help you in implementing additional features!!
Maxim, I think that the performance hit of replection with respect to the performance hit of adding or modifying a document to a document library is minimal! Event handlers are asynchronious in SPS2003/WSS (you had synchronious events in SPS2001) so I would't bother.
Jan, I had to read further in other posts before posting my questions!!! You already wrote that you will make the sourcecode available! Great! In question 3 above I mean the implementation as done by kaneboy. Would be a great addition, although it is easiest to modify things in the XML instead of having to write code!
We're doing a migration (for a client) from SPS 2001 to 2003. The lack of workflow in standard SPS 2003 is a real issue for us. Do you plan to release the source code to Workflow Lite? (Otherwise, it might be a hard sell). John
Yes, as soon as I release V1 I'll admit members to the GotDotNet workspace, so they can contribute.
My question has to do with either the breadcrumbs or the navigation web part. I can get it to display on my site fine but it seems that it only shows site and subsite levels, it doesn't show down to individual pages. For instance if I go into edit a contact should it show something like rootsite/subsite/contacts/edit contact ? I looked at all the settings but I don't see anything.
I also had some problems with this, otherwise very clear, sample. After deployment the same error pops up in the Event Viewer: "There was a failure executing the receive pipeline: "[NAMESPACE]" Source: "XML disassembler" Receive Location: "[PATH]\*.xml" Reason: The disassembler cannot retrieve the document specification by using this type: "Customers". Either the schema is not deployed correctly, or more than one schema is deployed for the same message type." The schemas are part of my project which was correctly deployed. If it is a namespace-conflict please let me know on a property-level what a should change. Thanx in advance.
Brett, this is not possible. If you want that behavior I suggest you alter the code a little bit.
Just to make sure: you're looking on the server desktop, right? If you're using Terminal Services it's possible that the messagebox shows up on monitor connected to the server.
Hi Jan, in the second question I didn't ment event handlers on other lists, but as a action adding a new entry to any list in any site or any listing in any portal area. Keep up your great work, if you need any help, let me know!
One big thing I miss with tim's feedreader web part is the ability to modify the title of the blog, so if you provide the RSS feeds on multiple blogs on the SharePoint category, they all name in SharePoint so you can't distinguish. You seem to provide this ability! It's late now, but I will try it out tomorrow!
Skelta (www.skelta.com) has recently launched a Workflow accelerator for SPS. Skelta integrates seamlessly with SharePoint sites maintaining the usage characteristics, look and feel of SharePoint. Skelta’s Process designer wizard empower non-technical workers to build and deploy document approval or review workflow within SharePoint sites.
Now, only if it didn't cost 100,000,000$ a pop us college programmers wouldnt have to steal, sorry I didn't mean to say steal,I mean borrow, from other people/ unnamed corporations.
Breadcrumb is great tool but it appears that it requires the user to have at least "Reader" access at all the levels of the site otherwise the user can not get into the site to which he/she may even be an administrator. For instance, if I have top level site http://www.toplevelsite and a subsite as http://www.toplevelsite/subsite, and breadcrumb is setup on both the sites. Now, if I have a user "user1" who is not given any access at the "toplevelsite" but he is administrator on "subsite", he is not able to get to "subsite" because Breadcrumb requires him to have access to "toplevelsite" before he can access the "subsite"... We are using subsites extensively and pretty tight security settings as well. It would be nice to have Breadcrumb like navigation with having to give "Reader" access to the whole site structure to each user!!! Thanks.
I still have the problem that the second person on the list of users is said to be the person who made amendments when it was in fact me as (site) Administrator. When other users make changes, the web parts gives their name (i.e the problem seems to be only with Administrator). Why it is always the second person on the User list, I don't know. I found this out by adding a new user and this became the second on the list. But before you say, I then added another user lower down and the web part still says it was the second user who made the changes.
I get the same problems: A Web Part or Web Form Control on this Web Part Page cannot be displayed or imported because it is not registered on this site as safe. Cant seem to find a solution on this forum either.
Did you use the packaged version, that includes an installer? Check here for the latest versions: http://weblogs.asp.net/jan/archive/2004/04/26/120508.aspx
I am trying to have the breadcrumb on all of the default.aspx pages, but I can not figure out the code to point to the breadcrumb, is this possible to do? Such as the Document Workspace's default.aspx page in the TEMPLATE area. Any suggestions would be appreciated.
That's an awesome find, I've got to get one. I can set it on top of my XBox. I got into programming on the Commodore VIC-20 (4K of RAM with about 2K usable). I quickly ran out of space and my parents got me a C-64. During that time it dropped from $495 to $225 with a $100 rebate. I also run a C64 emulator on my PC but I haven't tried one on my pocketpc. I wrote a program that managed and scored cross-country (running) races. I have a picture of myself with a commodore 64 in the middle of a golf course next to a finish line. My dad even helped me solder switches onto pins 8 & 9 of the cartridge port. Ah, those were the days. I'm trying to think of my favorite game back then... there were so many!
Sure, no problem!
Can this run on multiple sites?
I got it to work. I was easy to figure out. I really like the work you did. You mentioned an email trigger. Do you have something in place?
Brad, in V1 (which is nearly finished) you can have actions that send emails.
Use sharepoint lists as secondary data sources in InfoPath.
The web server is set up to require client certificate. How should I select the client certificate and provide it to the webservice ? With C# ou VB.NET this work beatifull, but i need something like this in FoxPro 6 or 8 or VB6 , some body can help me please??
Yes, here I go again, chiming in late. Is it possible that the lists your lookup columning into do not allow anonymous access? Just a thought...
nice
Sounds what I have been looking for, please keep me posted when you have implement it. Regards Raul Tejada rtejada@pancanal.com
To: Jan (the blog owner) Thanks a ton!!! Your solution saved my a**! For the last 2 days, I have been banging my head against the wall and my problem was "exactly" the same as the post attempts to solve. This was a perfect, natural fit for my problem. As soon as I implemented the ICertificatePolicy interface and used the ServicePointManager class, the certificate issue went away. None of this is easy to glean from the MSDN documentation. I am sure that even a couple years from now, there will be folks who will find this info. useful. Thanks again.
This looks similar to the CorasWorks email connector/workflow solution, but it's 'marginally' cheaper. Very good. Thanks for sharing.
looks great jan!
adss
What about searching: do you filter the search results to return only document in the "Published" state?
Can you explain a little bit more Thomas? When do you want to filter?
Thanks ;o) EROL
It's not clear from any of the documentation I have found so far whether iFilters need to be installed on the SQL Server (where the content database is) or on the IIS Server (where Windows SharePoint Services is running). Anyone know?
Great stuff Jan, looking forward to checking this out...
What I meant was when a document is not yet published it should not show up in the search results.
Hi Jan! Your RC1 looks promising. :) I tried to download it but I can't (it shows a disclaimer). How can I download it? By the way, I applied for your workspace, but I realized that I can't help/contribute to your project. Feel free to decline my application. :) Thanks!
Hi jan! I have successfully installed the Beta version but after installing the RC1 edition, I am having a problem. I am receiving the error Could not execute the COPY action.(System.ArgumentException: Value does not fall within the expected range. at Microsoft.SharePoint.SPWeb.c(String A_0, Boolean A_1, Boolean A_2) at Microsoft.SharePoint.SPWeb.f(String A_0) at Microsoft.SharePoint.SPFile.a(String A_0, Boolean A_1, Boolean A_2) at Microsoft.SharePoint.SPFile.CopyTo(String strNewUrl, Boolean bOverWrite) Any ideas?
Eugene, that's strange... send me an email and I'll mail it to you. Graham, I've send you an email for some more info.
Linked
Thanks EROL www.mysps.info
Hi Jan, great part. I also am having the issue aggregating the feed from our portal sites, which all have authenticated access. Can you possibly show us how we can include the credentials?
I see where I can exlcude certain lists, but do not know the possible parameters. Also, I would like to use the title of docs by default. However, people rarely fill in this info. So can someone provide a little code to use the title if it exists, otherwise use filename? Thanks, -Tom N.
2 questions/requests re: the navigation web part. 1) Many people, including me, are quite dissatisfied with the default Sharepoint navigation structure. Has anyone modified the nav web part to show all site structure from the top WSS web site down? In this way, it could be used suitably for left navigation. (Therefore, the tree would not change wherever you are in the site). 2)Has anyone put together a collapsible tree structure for this web part, as the number of subsites may get large rather quickly. 3) Can you include other site structure components (web parts) other than subwebs? For example, doc libraries, discussions, events, etc? I think it would make this web part an indispensible addition to/substitute for all other navigation alternatives.
Hi..jan.. i tried to install the ifilter from the adobe's site and also have installed the filter. but now will my query work the same way as it was before.. like it would now search for pdf files as well.. so m i suppose to add some lines of code to accomplish "search for text in pdf file" or it shall automatically be done by installing the ifilter. I use ms indexing service, iis 6 and win xp. For my search page using asp is ixsso.query object. So can u plz guide if i need to do some changes or it should run the same way but give me results for pdf files as well cheers sr301
I am not into biztalk, but I wonder where the selfdescribing part of this webservice is? In this case all service facades could have only one method: Handle(xml). Ok, it's easier.
You're right, the self describing part of the web service is partially gone (the web service tells you that you can submit any XML document). However in BizTalk scenarios agreements are based on schema's rather than service endpoints. For example a receive port (e.g. a queue or ftp location) can receive any type of XML document. Based on the schema of the received document, orchestrations can be started and the message can be processed. If you want to have the same behavior when using a web service, you can use Scott's generic web service. Think of it as a facade that's process driven, between two or more business partners that know eachother.
I am having trouble getting RC1 to work. I was succesfully using the beta and now It doesnt seem to work.
Hi Jan, I installed the beta version, and it works fine but for RC1, it does not work eventhough I followed the instructions indicated on the readme. I don't receive any application error.
i wana take that version
i wan aad 7 version of msn
When I install the Lead-it SharePoint RSSReader Webpart 1.0.0.1.msi.....it never prompts me for the installation location. Does this require a 2003 Server ? Or will it work on a 2000 Server ?
Steve, it should work on both of them.
Jan, I took your idea and instead of using the WSS Web Service, I used the SPS Area Web Service to get a view of the Portal Area structure. You can download it from http://www.peterprovost.org/archive/2004/06/07/1348.aspx
i failed to run your webpart on my SPS 2003. Either installing webpart by means of MSI-pack or installing Leadit.SharePoint.Administration.dll manually resulted the same - the whole webpartpage with your webpart failed to open with "Access denied" error. Can you help me
Still unable to get RC1 to work. I followed the install precisely. Any idea why I am unable to get it to work. In the meantime I went back to the beta version. Please keep me posted
Great webpart! I have a simple question...where should I put it in my site? If I stick it on the homepage, it prompts non-admin people for their password and won't let them in. Maybe I could create a special admin-only list on my site and drop it there?
I could not all a web reference using Visual Studio.NET to a webservice running in SSL. Iam getting an error stating "The proxy settings on this computer are not configured correctly for web discovery. Click the Help button for more information." Can someone tell me the steps for adding webreference a Webservice running in SSL.
Thx Jan!!! There will be a show! :-)))))
I'm having a similar issue that Stan is above, except I am definitely using the same account to in both FrontPage and via the web browser, where the page will give the error the "list does not exist." In FrontPage everything looks great and works fine. Possible ideas on what could be causing the problem -- 1) i have lookup columns in the document library i am setting up the dataview for, 2) the sub-site I am querying does not inherit the permissions from the parent site, though all applicable users have access to both sites, 3)... I can't think of anything else. Anyone with ideas, could you please email me at wss@buttermymussin.com? Thanks so much.
Now Fons and Jan Tielens, have improved on the this with the SmartPart for SharePoint ...
Jan, you did a great job! It's way too cool! It's just so easy to hook up your ASP.NET user control with the smartpart. Just what we need! Now make them connectable! ;-) Again, Wow!
Wow, video. Great man!
What a great way to use .NET and SharePoint! I put an entry in my blog about this as well. Great work you two!
Some explanations : In the code we post on 4/30/2004, we created a class that inherits the wrapper VS.Net build for the web service instead of modifying the wrapper class itself. The reason for this is quite simple. Since the web service class is not modified, you can get new versions of it without having to apply the fix again and again. (this is very useful when the design of the web service is done along with the development of the client side). Just a remark : This error may occur even if the code above has been applied. It seems that Microsoft identified a bug in ASP.Net and has a non-public patch for this (http://support.microsoft.com/default.aspx?scid=kb;EN-US;819450). So, still investigating...
Ok, es tut sich mal wieder viel im SharePoint-Universum.
Great idea. Looking at the video, I only wish my laptop was just as quick at creating visual studio projects!!
You guys are amazing! This is what we have been waiting for. While we where waiting, you just developed it! Great solution to a huge problem.
Nice tool here... added to my blog
I was trying to figure out the syntax for something similar to
Is there anyway you could create an installer for the DropDownNavigation WebPart like you did for the Lead-It Navigation? That would be very helpfull, thank you.
Jan is just too cool!! Just as I am getting over my ecstasy with what he had created with Workflow Lite - now he has come out with Smartpart. This guy should really get a HUGE award for all the great work he is doing in the SharePoint community. I can't stress how impressed I am. Great work again Jan! I have been working very steadily with SharePoint for about 2 years now and I absolutely love it. I love what it does for me today and even more so I love it's potential. Aside from the power given to the information worker (which is tremendous), what really makes SharePoint scream are the web parts, tools and add-ons that developers like Jan come up with that extend the platform....
Jan, you are doing some AMAZING work with SharePoint. I am positively in awe of all the cool stuff that's coming out of your mind. Rock on!
Just great, nothing more to say...
Is there a way to set up an alert for contacts? Specifically, I want to set up an alert for a distribution group, but can't because the group doesn't have a real user id. Any suggestions? I'm new and don't have any .net programming exp.
I'm getting the "Value does not fall within the expected range" error too, with RC1.
I really like it
Thanks for the kind words Jan. I'll try to post some more cool webparts within the next weeks.
I see that Tom van de Kerkhof has created a Treeview Webpart based on Jan and Fons' SmartPart. This is great. It is so exciting to see how many great things are happening right now with SharePoint. It really goes to show how much a difference a community makes to any application or software that is introduced to the market....
if I use ascx file which contains codebehind file and database interaction means it gives me error. but calendar part works great! Can anybody help to connect ado based ascx file to convert as webpart? shridhar
Thanks for this information, EROL (www.mysps.info)
Has anybody had any luck with RC1 ? I'm also getting the "Value does not fall within the expected range" error on COPY action in the Event log.
Jan, Of course, it is possible to run User Controls in Bin direcotry without registering anything inside GAC. Just keep in mind that if you want functionality avalable throught different vservers then GAC is good solution! I also noticed that you are using Wppackager deployment took way to go. One bug you have in the wppackager.xml file is you pasted short token value not the blob use secutil to retrieve the full strong name blob. I will make a write up on this isse :) Stay tune, Maxim [www.ipattern.com do you?]
I am having the same navigation problem as Chris, some subsites don't show the correct tree. I have the following: Site |-Sub1 |--SubSub1 |-Sub2 It shows the whole tree at Site and SubSub1, but Sub1 only shows: Site |-Sub2 and Sub1 shows only: Site |-Sub1 |--SubSub1 Start from root and 5 levels is selected for all of them.
For reference I am running WSS on 2K3 server using MSDE.
I am having the same navigation problem as Chris, some subsites don't show the correct tree. I have the following: Site |-Sub1 |--SubSub1 |-Sub2 It shows the whole tree at Site and SubSub1, but Sub1 only shows: Site |-Sub2 and Sub1 shows only: Site |-Sub1 |--SubSub1 Start from root and 5 levels is selected for all of them. I am running WSS on W2K3 with MSDE.
I am also getting this error, any news on how to fix it? Btw, great job Jan the videos look great for a sharepoint only workflow which is exactly what I'm looking for at the moment. Looking forward to getting this fixed...
Jan, Simple solution for the GAC problem will be. 1. Compile everything with the same *.snk file. 2. Then use C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin\SecUtil.exe -hex -s [path_dll] 3. Add following Code group <CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust"> <IMembershipCondition version="1" class="StrongNameMembershipCondition" PublicKeyBlob="0x0024000004800000940000000602000000240000525341310004000001000100BB20A2F20001218C2100806C4A656705F4220FE7636574B9B8128E0AA44BE734F379B88130A29020D658ED8CFA1B0A0C93094A22144C54476A507FBB5D812C94DD412AB260EED31D99857A53E20200AC9020007D852540DB43C54D5269507DD45181B1B5E6766C9E2FB3DD0C931C2D1B22ADFDCEC8FDB02E423E3D8BBD59C4B9" /> </CodeGroup> Right after the following in the WSS_Minimal <CodeGroup class="FirstMatchCodeGroup" version="1" PermissionSetName="Nothing"> <IMembershipCondition class="AllMembershipCondition" version="1" /> 4. IISRest.exe and you ready to go I hope this hepls. Maxim BTW. I am working on the second article on CAS which will cover this in some details [www.ipattern.com do you?]
I am also having the same COPY error. The Delete function works so I know it is executing. Are we able to download the Beta version in the meanwhile?? I can't find it anywhere. Thanks.
Hi Jan, my .NET skills aren't any good so pardon if the question is somehow trivial. It seems I cannot deploy the DropDownNavigation.dll (or the treeview for that matter) in my \windows\assembly directory. I'm getting an error that states the dll has not a strong (secure?) name (more or less, take into account that the error is in spanish). So I can't go any further. Any help with this?
If you want to deploy the DropDownNavigation.dll to the GAC, it will need a strong name. It comes down to generating a public/private key pair with the SN utility, and adding that key to the AssemblyInfo. The complete process is described in this article: http://www.dotnetspider.com/Technology/KBPages/406.aspx Remember that you don't need to deploy the DropDownNavigation to the GAC, unless of course you've made some adjustements that require GAC deployment.
I just follow the instructions to install the SmartPart. I want to try the dropdown navigation example. However, after placing the web part and fill in the path, it returns this error: "Error: unable to load ~\UserControls\Dropdownnavigation.ascx Details: Request for the permission of type Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c failed." Please please help. P.S. I am not a developer. So, please speak it slowly. Thanks a lot.
I also recieved the following error when I attempted to deply the DropDownNavigation user control. Error: unable to load ~\UserControls\DropDownNavigation.ascx Details: Request for the permission of type Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c failed. Please Help...
Attention: works: C:\Test\%SourceFileName%.xml won't work: C:\Test\Test_%SourceFileName%.xml under BTS 2004
I'm having the following Error!! How can I fix it??? Unable to instantiate event handler (assembly "Leadit.SharePoint.Workflow, Version=0.2.0.0, Culture=neutral, PublicKeyToken=3948f234bbbabe18", class "Leadit.SharePoint.Workflow.EventHandler"), or report event for "En Progreso/Demo WEB Parts.txt" in "En Progreso". Could not execute the COPY action.(System.ArgumentException: Value does not fall within the expected range. at Microsoft.SharePoint.SPWeb.c(String A_0, Boolean A_1, Boolean A_2) at Microsoft.SharePoint.SPWeb.f(String A_0) at Microsoft.SharePoint.SPFile.a(String A_0, Boolean A_1, Boolean A_2) at Microsoft.SharePoint.SPFile.CopyTo(String strNewUrl, Boolean bOverWrite) at Leadit.SharePoint.Workflow.EventHandler.HandleEvent(SPListEvent le))
Jan, I not sure if you saw this article or not but here is a great explaintion of all ther options you have to calling Web Services http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_sp2003_ta/html/sharepoint_wsscodeaccesssecurity.asp Maxim [www.ipattern.com do you?]
I reinstalled and now I am getting the following... Unable to instantiate event handler (assembly "Leadit.SharePoint.Workflow, Version=0.2.0.0, Culture=neutral, PublicKeyToken=3948f234bbbabe18", class "Leadit.SharePoint.Workflow.EventHandler"), or report event for "Work In Progress/fdghjhj.doc" in "Work In Progress". Could not read config file.(System.InvalidOperationException: There is an error in XML document (2, 2). ---> System.InvalidOperationException: <WorkflowConfiguration xmlns=''> was not expected. at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read8_WorkflowConfiguration() --- End of inner exception stack trace --- at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle) at System.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader) at Leadit.SharePoint.Workflow.EventHandler.get_Configuration())
Same thing here. Unable to instantiate event handler (assembly "Leadit.SharePoint.Workflow, Version=0.2.0.0, Culture=neutral, PublicKeyToken=3948f234bbbabe18", class "Leadit.SharePoint.Workflow.EventHandler"), or report event for "Doclib1/Teste do sp2003.doc" in "Doclib1". Could not read config file.(System.InvalidOperationException: There is an error in XML document (2, 2). ---> System.InvalidOperationException: <WorkflowConfiguration xmlns=''> was not expected. at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReader1.Read8_WorkflowConfiguration() --- End of inner exception stack trace --- at System.Xml.Serialization.XmlSerializer.Deserialize(XmlReader xmlReader, String encodingStyle) at System.Xml.Serialization.XmlSerializer.Deserialize(TextReader textReader) at Leadit.SharePoint.Workflow.EventHandler.get_Configuration())
Oh my god! It seems that the HTML filtered out some tags... :-( Please see the original post, it should display the corrected XML (again). The Workflow tag should contain following namespaces: <WorkflowConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://Leadit.SharePoint.Workflow/WorkflowConfiguration">
Well, that error previously stated: Error: unable to load ~\UserControls\DropDownNavigation.ascx Details: Error de solicitud de permiso de tipo Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c. is the same i was getting. I pretended to solve it by deploying to the GAC (no luck) but it seems that's not the cause of the problem at all. Any idea Jan? Thx for the good work
Very nice webparts. But I have a question regarding the navigation webpart. On the main site for the whole portal (I have called it MainPortal) I have put the navigation webpart. Under the main portal, I have 2 sites, called TestSite1 and TestSite2. Under TestSite1 I have another subsite called SubTestSite1. On the navigation webpart that I have put on the main portal page, I get a list of a lot of things, but everything is on the same level, and the sites are not there (I have chosen 5 levels...). The closest I get is a link to "sites" which takes me to the sites page. And from there I can navigate to TestSite1 etc. But I was hoping to get a tree view on the main portal page which included TestSite1 with SubTestSite1 under it, TestSite2 etc... Have I misunderstood anything? Or am I doing something wrong??
Hi Jan, This is really cool And I noticed the config file has got sorted out in RC1c Btw how about including logging in this. Might be easier to troubleshoot issues that may arise that way.
Tariq What do you mean by loggin? Bugs/issues can be tracked in the GotDotNet Workspace. Or do you mean logging inside the workflow engine?
this is only work for serial flow. is it possible to make it parallel also. i mean both work together ??? if yes...tell me in details.....
works great, Having a little trouble with the email.
Unable to instantiate event handler (assembly "Leadit.SharePoint.Workflow, Version=0.2.0.0, Culture=neutral, PublicKeyToken=3948f234bbbabe18", class "Leadit.SharePoint.Workflow.EventHandler"), or report event for "Work In Progress/This is work in progress.doc" in "Work In Progress". Could not execute the SENDMAIL action.(System.Web.HttpException: Could not access 'CDO.Message' object. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Runtime.InteropServices.COMException (0x80040213): The transport failed to connect to the server. --- End of inner exception stack trace --- at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters) at System.RuntimeType.InvokeMember(String name, BindingFlags invokeAttr, Binder binder, Object target, Object[] args, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParameters) at System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args) --- End of inner exception stack trace --- at System.Web.Mail.LateBoundAccessHelper.CallMethod(Object obj, String methodName, Object[] args) at System.Web.Mail.CdoSysHelper.Send(MailMessage message) at System.Web.Mail.SmtpMail.Send(MailMessage message) at Leadit.SharePoint.Workflow.EventHandler.HandleEvent(SPListEvent le)) For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
When I download the source code for the RSS Reader, the project references an RSS directory that contatins the RSS and RSSFeed namespaces, but the files seem to be missing from the ZIP archive. Please help.
please disregard. I needed to enable smtp mail relay
Now working, thanks.
Jain Could you explain the scenario you are thinking about, a little bit more? Btw, maybe it's easier to contact me through the contact link to solve this issue.
Andy, are you using WSS or SPS?
hi jan, in this existing scenario , only one persone at a time can approve the document after this it moves to next folder for other person approvable.but if more then one person suppose three person want to approve/reject this doc OR any one out of three then this workflow lite will not work.(parallel flow.)
Jan, Why don't you publish the source code? Really nice product, keep working on it!!! Oriol.-
The formulas { FIELD:Title }... don`t work. I have the WSS installed in Spanish, this could influence? If in a parameter in config.xml I put {FIELD:Title}, in the WSS appears the text {FIELD:Title} and not title of the document. How could I use references to other fields of the document library item? Thank you.
Oier, you can replace Title by the name of the field in your doc. lib. For example {FIELD:MyCustomField}
I use SPS...
Great work! Trying to the SENDMAIL action working but having a little trouble. This is the message saved to the event viewer: Unable to instantiate event handler (assembly "Leadit.SharePoint.Workflow, Version=0.2.0.0, Culture=neutral, PublicKeyToken=3948f234bbbabe18", class "Leadit.SharePoint.Workflow.EventHandler"), or report event for "In Review/Full page fax print.pdf" in "In Review". Could not execute the SENDMAIL action.(System.Web.HttpException: Could not access 'CDO.Message' object. ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.Runtime.InteropServices.COMException (0x8004020D): At least one of the From or Sender fields is required, and neither was found. I have specified a From email address in the format name@company.com. Lloyd
>I have specified a From email address in the format name@company.com. Sorry, this is incorrect. I've specified the "To" email address like: <Parameter1>name@company.com</Parameter1>. I don't know what user it is using as the Sender. I gess Workflow Lite takes care of that?
Lloyd, could you verify that the account you are using to run the workflow (the one specified in the machine.config), has an email address in SharePoint?
Thanks Jan, that solved it. Is there a particular reason why the workflow user is being used as the sender rather than the "Modified By" user?
Yes, it was a design choice. It's easier to enforce that that service account has an email, than each user.
Encountered same error as Emiel.
Can workflow lite work with Lists too? Like the Issues list? I would like to send email to people based on the status field of the issues list(open, updated, resolved)with fields from the same list in the body of the email message.
Hi, I just read your workspace. Is workflow lite work for SharePoint 2003 ?
Wade, it only works with Document Libraries (by design of SharePoint itself). Riwut, it's for SharePoint Portal Server 2003 or Windows SharePoint Services.
Sorry, I tried on and found out that the file-adapter for non-XML files doesn's recognize the %SourceFileName% property! Does anyone know about this issue?
It seems like I can use the files from version 1.0.0.0. Please let me know if this might cause a problem.
i want msn to come out in june 21st 2004
i want Msn 7 come out on the 1st july 2004
This is just completion of my previouse article on CAS. I am still thinking on finishing off the series with SharePoint specific article and releasing a CAS SharePoint ToolKit. What do you think? Maxim [www.ipattern.com do you?]
I placed the navigation web on the main page of my portal. It shows all of my areas. However, it doesn't display anything from http://portal/sites or below. The CorasWorks workplace navigation webpart doesn't seem to be able to handle this either. Anyone aware of a webpart that can show sites from the portal on down into WSS sites?
Michael, see if this fixes your problem. In "RenderWebPart", add this else clause after the "if(web.ID != childSite.ID)" that is in the "foreach" clause: else { output.Write("<li>{0}</li>", childSite.Title); RenderWeb(output, childSite, 1); } To make it even cleaner, remove the calls to "RenderWeb(output, childSite, 1)" from the if and else blocks and put it after the whole structure. Hope this helps!
As a re on Martin Kirsch's: works: C:\Test\%SourceFileName%.xml won't work: C:\Test\Test_%SourceFileName%.xml Strange because: C:\BT2004demo\%datetime%_%messageid%.xml works just fine here.
Is it possible... to make individual documents [not all] accessible to outside viewers but with one central location? In other words, is it possible to share filtered documents to viewers outside my SharePoint community? Maybe have a library on my root site that incorporates already filtered sub-site libraries? Can I make this possible with FrontPage or any other services? Any thoughts appreciated! Please question if unclear. Thanks all!
Maxim, that sounds really great. A lot of developers are contacting me about SharePoint problems, and in a lot of cases it comes down to problems with CAS. So I do think an article that explains it all would be "a hit"! Contact me if you want more ideas and/or a review.
and smartpart shows (c:\windows\microsoft.net\framework\v1.1.4322\Config\machine.config line 198)
I have added the following class to my code for consuming a webservice (I added it to the form1.cs). I want to be able to accept all certificates for testing etc.. public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy { public TrustAllCertificatePolicy() {} public bool CheckValidationResult(ServicePoint sp, X509Certificate cert,WebRequest req, int problem) { return true; } } However, when I try to build the application, I get the build error: 'TrustAllCertificatePolicy' does not implement interface member 'System.Net.ICertificatePolicy.CheckValidationResult(System.Net.ServicePoint , System.Security.Cryptography.X509Certificates.X509Certificate, System.Net.WebRequest, int)'
Dude, this rocks, You Rock. Been trying to do this for a few weeks, Thanks
UPDATE: By trial and error it has become clear that if you have SQL on a different server then you need to install the iFilter on the SQl Server not on the IIS server.
sr301, Check the Adobe site... there is an issue with ifilter on XP - you need to make some registry changes to fix it.
I get a 401 Exception from the server. I tryed to put some code for proxy settings, but it is not enough ?!
Hi I have tried Smart Part coupe of times.But every time I get the following error message.Kindly help. The "UserControlWebpart" Web Part appears to be causing a problem. Web Parts Maintenance Page: If you have permission, you can use this page to temporarily disable Web Parts or remove personal settings. For more information, contact your site administrator.
I am getting the below mentioned error .I have tried couple of times ...Any help will be highly appreciated. The "UserControlWebpart" Web Part appears to be causing a problem. Web Parts Maintenance Page: If you have permission, you can use this page to temporarily disable Web Parts or remove personal settings. For more information, contact your site administrator.
I had the same failure on the receive pipeline. Undeploying doesn't clean out the GAC as you would expect. I fixed it by incrementing the version of the project and re-deploying.
This seems like too much work! I have a simple XML document with a single repeating section containing only two fields. I want to use both fields within a second form such that theres a drop down list populated by the entries in the first field and have the second fields related entries automatically inserted into a field in the second field. The fields in the first form are 1. the common names of flowers, 2. Their Latin Names How easy could it be! Yours frustratedly nicksoph
Great! thanks for your shares
Brilliant!
Hi Iam trying to add header file to my output given by mapper and attach header file in send pipeline.I have tried with my header schema to give as header file to my output.Thanks Ram
I changed the code to only pull in the users for the current site, rather than for the whole site collection by changing calls to web.SiteUSers to web.Users. I would guess that this is the desired functionality in most cases. May I suggest that this change be made in any future versions.
Hi, I'm using this webparts but the Leadit.SharePoint.Essentials.Navigation only show the first 2 levels on the tree if I use it on the top-level site, if i put the webpart further down the tree of sub-areas it only appers the area itself and none of the subareas, there is a solution for this? Thanks!
Steve, I would be glad to make the changes to the source, but I have no idea how. I see the source is available for download, but I don't know what to do with it after I modify it. If there is some way I can modify the web part in place I will be glad to do that, though.
I was feeling left out....... Error: unable to load ~\UserControls\DropDownNavigation.ascx Details: Request for the permission of type Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c failed. Like the other posters, I've looked elsewhere, but I don't know what's up. Anybody help??
I came across the issue. Instead of opening my HttpRequest with : //request = (HttpWebRequest)WebRequest.Create(uri); request = (HttpWebRequest)WebRequest.Create(url); where uri is of type Uri and url is the string given as parameter ???!!! I am lucky it works, but I don't understand why ?!
Jan - is there a way to allow a trigger to be based on more than one field value? Also, is there a way to tell it to trigger if a value is empty? I've tried " " and "" for my values on the trigger and niether work. I am attempting to reset the "Approval Status" value to "Pending" (2) if the "Approver Comments" is empty but I cannot get it to fire. I am trying to take advantage of the built-in approval / rejection methods that document libraries allow you to enable. The problem is that some of our portal-site administrators will have access to this particular site but they are not allowed to approve documents they submit (they are not defined as site administrators in this specific site, but they are in the actual root portal site). The site has been setup to use "unique permissions" instead of inheriting the parent permissions but I seem to still have problems with it automatically setting the document to approved. Any ideas? Scenario: monthly management reports from our divisions are to submit documents to a specific document library. Once submitted, our president reviews the documents. If he rejects them, his assistant takes care of making the necessary changes. The document is then put back into "Pending" approval and our president is to once again review and approve if necessary. Some people who are submitting documents are part of the portal administrators, but have only been defined as contributors to this specific site. The problem is these "special" users are automatically approved once submitting the document. So, I thought I could check if comments were included and if not, reset the status to "Pending" otherwise allow it to be approved since there are only two people allowed to approve documents and I will tell them they must submit the approval with comments.
Mike, can you send me an email (using the contact form) so we can discuss your problem in detail? At this point it's not yet possible to trigger actions based on the value of 2 fields.
could you please tell the solution for this.
This works great, but not as expected. I was hoping that it summed up all new items on my entire portal, not just the subsites below one single top site.
Hi, I'm following the different blogs for a couple of weeks. And I have to admit I learned some great new stuff. However I'm still suprised by the technical level of all the information, and a low business adaption. Microsoft is trying to move to a service approach........ but I think we are far from their... Sorry to use your blog to share my comments. Greetings, Hans
Oe Oe Oe! ;-)
Add control to the web.config of your sharepoint site. <SafeControls> <SafeControl Assembly="WeatherInfo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6185e98411448c6a" Namespace="WeatherInfo" TypeName="*" Safe="True" /> </SafeControls>
You have one, avid reader #1 ;)
Yes! I did it! ;-) Thanks for "comming out the closet"!
So, let the posts come... :-)
Great work! I was trying to remove a particular user from the alert through the remove selected alert which I created through this web part, but it doesn't remove em.
Is it possible to trigger on the "Approval status" field/value ? I have tried with no success. I would like to move the documents based on approval status.
Hi When i try to add the useralert web part I get the question for user an password, and access denied. Seems that whatever i try to autenticate with i get a problem. Can anyone tell me what the problem is, and what rights the user should have ? I am running as administrator on aa test-server. Idid run into the same problem with the Snorre
saeed, Look at the original solution posted by Jan. Solutions by Schwank and Skeup&Zeb seem to be a bit overcombinated. There is no need to use that property info. Just use the request object returned by the call to base.GetWebRequest(uri) One more thing. For me changing only .KeepAlive to false didn't help at all. However when I changed also .ProtocolVersion to HTTP10 the problem was gone.
Is the new MSN version free? sandra degarie sdsummit11@hotmail.com
For the people who are attending Teched in Amsterdam, walk to the ask the expert area and ask for a demo on the IBF booth (next to the sharepoint booth) They have a very nice demo about integrating office with CRM through IBF.
Thanks for the fix, it works great. I also have a question. Should you use this method only for web service calls that include WSE functionality or can you use it on all web service calls. P.S. I did see the example on how to fix the issue for non-WSE web services that link to this page...
When I catch "Modified By" fiels I get "#:4Administrator" instead of the value "Administrator" Where did the "#:4" bit come from?? and how can I stop it from adding this extra piece?
I was wondering if Workflow Lite works with other Office versions (2000, xp) because from what I see in the demo it only works with 2003, is that correct??
Hi Jan, First of all : your work is very helpfull to me where I'm discovering Sharepoint features. At the moment I'm trying to implement your Workflow Lite version RC1C. I think I've installed and configured according to the documentation, but when changing a status value in the source document library nothing happens. Not even an error or logging. So I have some questions : 1. How can I find out if the configured config file is or is not used ? 2. Must all actions be present in the config file or can I reduce to for example only the DELETESOURCE action for testing ? 3. Could the fact that I'm implementing for external access (DocumentLibraryURL="http://www.bk2000.nl/sites/wflow/xxx/forms">) be the troublemaker ? 4. I'm running a Dutch trial version of SPS2003. Is there except referring to other FIELD:names as in your example config file anything else that I therefore must change ?
I'm sorry, but doesn't anybody notice on the Navigation part that the indentions are waaaaaayyyyh too far - e.g. 1/2" each level and it does not text wrap - where can you change this???
Problem solved. I was testing on an external documentlibraryurl from within my local network. Works fine now, compliments, I'm very interested in what is to come next.
Hi , I had modified config file and reduced the Actions only to COPY.It's not working ... Whether all actions be present in the config file ?? Pls. respond.
Found this RSS Webpart via Jan's Blog today. I installed it and it's a beauty! Quite nice and very easy to setup. I have noticed more and more examples of content from SharePoint being exposed through RSS feeds and that in my opinion is a very good thing....
Hi Poonam, No, not all actions have to be present. There are a few things however you should look after : Be sure that all colums and actions in your config file have the exact same name as in your document libray, they are case sensitive! In detail : <?xml version="1.0" encoding="utf-8" ?> <WorkflowConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://Leadit.SharePoint.Workflow/WorkflowConfiguration"> <WorkflowStage DocumentLibraryURL="-X1-"> <Description>DocumentLibrary 1</Description> <Properties> <Property Name="-X2-"> <Triggers> <Trigger PropertyValue="-X3-"> <Actions> <Action Type="COPY"> <Parameter1>-X4-</Parameter1> <Parameter2></Parameter2> <Parameter3></Parameter3> </Action> </Actions> </Trigger> </Triggers> </Property> </Properties> </WorkflowStage> </WorkflowConfiguration> If for example you want to copy a document from documentlibray work to documentlibrary done Suppose the libraynames are "http://localhost/sites/wflow/work"">http://localhost/sites/wflow/work" and "http://localhost/sites/wflow/done" Replace in the above : -X1- with the source documentlibraryurl : "http://localhost/sites/wflow/work"">http://localhost/sites/wflow/work" -X2- with the column you use for action triggering : for example "Status" Be sure that this column is in your documentlibarylistheader -X3- with the value of column X2 on which you will take action : for example : "Ready" -X4- with "done" In your case both doclibs should have the same columns. If you want to give the document in the destination library a new status you must the setfieldvalue action. I hope this helps, otherwise you can contact me on bk.2000@home.nl Sjeng
This is a great tool for the site. Does anyones knows a feedreader that understands NTLM? I've looked at SharpReader and FeedReader - both work fine on Basic auth, but not with NTLM. Thanks.
when is da new one cumin out!? n is it free!? write bk! xxx
for your question about spliting flat files into multiple xml docs check C:\Program Files\Microsoft BizTalk Server 2004\SDK\Samples\Pipelines\AssemblerDisassembler\EnvelopeProcessing. You shall find the anwser you seek.
will like you to allow me download the new version of the msn. Thanks
kindly help me download your new msn version now. Thanks
>> Does anyones knows a feedreader that understands NTLM? It's a bit "round the houses", but I retrieve RSS feeds with a bit of perl code, and the perl LWP library can be extended to understand how to do NTLM authentication with the LWP::Authen::Ntlm module (that's how I grab RSS feeds off our intranet). So you can either write a bit of perl to grab the feed and hold it locally, or do the hacky thing of writing a page on your own webserver that, on demand, grabs the real feed and returns it - a sort of PerlScript ASP web proxy thing - not difficult if you've done any perl ASP pages before...
Anyone know what settings I would have to change to go from the following schema: <ns0:Customers xmlns:ns0="http://Test.customersenvelope"> <ns1:Customer xmlns:ns1="http://Test.CustomerDocument">">http://Test.CustomerDocument"> <CustomerID>1</CustomerID> <Name>Customer One</Name> </ns1:Customer> <ns1:Customer xmlns:ns1="http://Test.CustomerDocument">">http://Test.CustomerDocument"> <CustomerID>2</CustomerID> <Name>Customer Two</Name> </ns1:Customer> </ns0:Customers> To this simpler one: <Customers> <Customer> <CustomerID>1</CustomerID> <Name>Customer One</Name> </Customer> <Customer> <CustomerID>2</CustomerID> <Name>Customer Two</Name> </Customer> </Customers> Thanks for the awesome example!
Is it possible to combine multiple lists with the same fields into ONE single Data View? I want all my clients to log into a SharePoint Site, go to the list I assigned for their company and enter in a work order. I wonder if there is a way to view the data in all these lists in one view. I know you can query it within MS Access, but I don't want to go that route.