Surendra Sharma

Surendra Sharma

Search This Blog

Showing posts with label DOT NET. Show all posts
Showing posts with label DOT NET. Show all posts

Sunday, March 26, 2023

Sitecore with CSharp REPL

If you're a C# developer, you'll want to check out this exciting new tool: C# REPL! This cross-platform command line tool is designed for rapid experimentation and exploration of C# code. With C# REPL, you can easily test out snippets of code, try out different syntaxes, and even experiment with new packages.

One of the great things about C# REPL is that it supports intellisense, making it easy to quickly find the methods and properties you need. You can also install NuGet packages directly from the command line, so you can easily add new functionality to your code without having to switch to a different tool.

C# REPL is a .NET 7 global tool, which means it can be easily installed on any machine running Windows 10, Mac OS, or Linux. And because it's a command line tool, it's lightweight and easy to use - perfect for developers who want to streamline their workflow and focus on writing great code.

With its support for referencing local .NET projects and assemblies, C# REPL can be a valuable tool for exploring and experimenting with Sitecore-specific code and functionality.

Here I am showing a demo on how you can use it Sitecore libraries to test it.

Check out this video for the same


Whether you're a seasoned C# developer or just starting out, C# REPL is a must-have tool for your toolkit. Give it a try today and see how it can help you work more efficiently and experiment more quickly!

Thursday, June 1, 2017

Solved : The content type of the response message does not match the content type of the binding


If you are adding any SOAP web service as just "Add Service Reference..." in Visual Studio and receiving below error at runtime in your code
 
System.ServiceModel.ProtocolException was unhandled
  HResult=-2146233087
  Message=The content type text/xml; charset=utf-8,text/xml; charset=UTF-8 of the response message does not match the content type of the binding (text/xml; charset=utf-8). If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly. The first 1024 bytes of the response were: '<?xml version="1.0" encoding="UTF-8"?>

Follow below steps to fix this


  • Right click on VS project
  • Click on "Add Service Reference..."
  • Click on "Advanced..."
  • Click on "Add Web Reference..."
  • Enter service URL and click on Go arrow button
  • Enter Web Reference name and click on Add Reference
In short add SOAP service as a "Web Service" and don’t by just Service Reference in Visual Studio.

Please leave your comments or share this tip if it’s useful for you.

Wednesday, October 19, 2016

Sitecore database lesson 10 - How to test Sitecore Databases performance

Sitecore provides a handy test aspx page to check your database performance. You can download it from here.


You have to unzip it and copy-paste “databasetest.aspx” page in “Website” folder.

Access this page from browser like http://sitecorelessons/databasetest.aspx where sitecorelessons is the name of Sitecore instance.

This page provides 

  • SQL Server information which includes ProductVersion, FileVersion, WindowsVersion, ProcessorCount and PhysicalMemory.
  • Perform action on items 10,000 times and provide useful information like Action name, Min Time, Max Time, Average Time and Boundary Average Time for selected database.
  • Provides index information and allow to rebuild indexes.
Here is screenshot of this page output

Sitecore Database Performance Tool
Sitecore Database Performance Tool


I hope you like this Sitecore database lesson. Stay tune for more Sitecore database related articles. 

Please leave your comments or share this article if it’s useful for you.

Friday, June 10, 2016

How to rebuild index programmatically in Sitecore



We have DR(Disaster Recovery) environment and everyday SQL job taking Production WEB database backup and restoring it on next day on our DR SQL server.

We are using SOLR search in our project.

Due to this database restoration, index rebuild is required for SOLR search. Initially we are doing indexing manually on daily basis.

But later on I make this rebuild process automatically.

Solution:
The easiest way to rebuild an index automatically is to create a scheduled agent that will call and run the below code.

There are two questions before do it automatically.
·         Do you want to rebuild particular items and its children?
·         Do you want to rebuild full indexing?

Rebuild Particular Item and its children

You can use Refresh() method that will take few minutes for execution:
/// <summary>
/// Rebuild Index
/// </summary>
/// <returns></returns>
public string RebuildIndex()
{
    string result = string.Empty;

    try
    {
        result = "Custom Index Rebuild Process Start : " + System.DateTime.Now.ToString() + System.Environment.NewLine;

        foreach (Sitecore.Caching.Cache cache in Sitecore.Caching.CacheManager.GetAllCaches())
        {
            cache.Clear();
        }

        result += "Cache completed : " + System.DateTime.Now.ToString() + System.Environment.NewLine;

        Sitecore.ContentSearch.ISearchIndex index = Sitecore.ContentSearch.ContentSearchManager.GetIndex("sitecore_web_index");
        if (index != null)
        {
            result += "Home Indexing : " + System.DateTime.Now.ToString() + System.Environment.NewLine;

            string homeID = "{97FF4F41-A5FD-4BC3-838F-6A01E0E26B18}";   //Home
            index.Refresh(new Sitecore.ContentSearch.SitecoreIndexableItem(Sitecore.Data.Database.GetDatabase("web").GetItem(new Sitecore.Data.ID(homeID))));

        }

        result += "Indexing completed : " + System.DateTime.Now.ToString() + System.Environment.NewLine;
    }
    catch (System.Exception ex)
    {
        result += ex.ToString() + System.Environment.NewLine;
    }

    Sitecore.Diagnostics.Log.Error(result, this);

    return result;
}
               
Rebuild Full Indexing

You can use Rebuild() method that will also take few minutes for execution.

Sitecore.ContentSearch.ISearchIndex index = Sitecore.ContentSearch.ContentSearchManager.GetIndex("sitecore_web_index");
if (index != null)
{
index.Rebuild(Sitecore.ContentSearch.IndexingOptions.ForcedIndexing);
}

What’s the difference between Rebuild() and Refresh() method?

The Refresh method allows you to update the full index or a part of it. The FullRebuild method deletes the index completely and builds it starting from the root.

The Refresh method also seems to be correct method to update the index, but if you need to rebuild the index completely, try Rebuild(Sitecore.ContentSearch.IndexingOptions.ForcedIndexing) - you should see the changes after as it forces the index rebuild.

Please leave your comments or share this trick if it’s useful for you.