2010-11-17 5 views
15

Warum bin ich mit dem Code unten ParseException: End of string expected at position 4.Sitecores Schnelle Abfrage Gibt Parse Exception

Hier ist der Code diesen Fehler: Der Fehler in der 3. Zeile ist.

var db = Sitecore.Configuration.Factory.GetDatabase("web"); 
string query = @"fast:/sitecore/content/foodservice/home/Products/3492-5326/3518-7"; 
Item item = db.SelectSingleItem(query); 
return item; 

Können wir eine schnelle Abfrage mit SelectSingleItem() verwenden? Ich habe versucht, die get folder contents and loop through each item until I find the target solution. Vorschläge zu vermeiden?

+0

Verwandte Frage: http://StackOverflow.com/Questions/3687405/escaping-Reserved-Words –

+0

Wer weiß, wie Sonderzeichen in Textfeldern, wie ein Apostroph in einer Inhaltselementbeschreibung zu entkommen? http://stackoverflow.com/questions/16847831/sitecore-fast-query-how-to-search-for-text-containing-special-characters-such – longda

Antwort

7

Dies ist ein Fehler, wenn schnelle Abfrage und SelectSingleItem() verwendet wird. Das Problem wurde in der Sitecore CMS 6.3.0 rev.100716-Version behoben. Siehe Release Notes. Da wir 6.2 verwenden, musste ich meine Methode neu schreiben, um eine Sitecore-Abfrage anstelle der schnellen Abfrage zu verwenden.

+1

Es scheint, dass dies jetzt ein Problem in 6.5.0 (Rev. 121009) ist, aber für die Sitecore-Abfrage (aber an Position 5). Freude. – longda

+0

Dies ist auch ein Problem in Sitecore 6.6. Wenn der Fehler behoben wurde, wurde er erneut eingeführt. – dadwithkids

+1

Gerade dies in 8.1 Update 3 aufgetreten! –

15

Wenn Sie die Sitecore-Abfrage verwenden, müssen Sie die Elementnamen mit Bindestrichen versehen. Von SDN:

Items with dashes in names (“-”) should be included in “#” symbols. Please use such syntax: /sitecore/content/Home/#About-us#. Otherwise you may get the following error: Invalid lookup source "/sitecore/content/TestSiteB/Home/About-us": End of string expected at position 38. Also, an item name should be included in “#” symbols if it contains “and” or “or” word and is used before “//” symbols. For example: "/sitecore/content/Home/#news and events#//".

UPDATE: Ich habe bestätigt, dass dies auch für schnelle Abfrage gilt.

End of string expected at position 27. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: Sitecore.Data.Query.ParseException: End of string expected at position 27. 

Source Error: 


Line 21:   protected void Page_Load(object sender, EventArgs e) 
Line 22:   { 
Line 23:    Sitecore.Context.Database.SelectSingleItem("fast:/sitecore/Content/Home/Test-Item"); 
Line 24: 
Line 25:    Model = Sitecore.Context.Item; 

Der gleiche Code läuft gut mit # entkommt #:

Sitecore.Context.Database.SelectSingleItem("fast:/sitecore/Content/Home/#Test-Item#"); 
+0

Ich benutze Sitecore Fast Query, nicht Sitecore Query. Die Striche sind nicht das Problem. –

+0

Bist du sicher? Hast du versucht, ihnen zu entkommen? Mein Instinkt wäre, dass Fast Query die gleiche Analyselogik verwenden würde, die die Bindestriche zu einer Anforderung macht. – techphoria414

+0

Siehe mein Update, ziemlich sicher, dass die Bindestriche das Problem sind. – techphoria414