Startup.cs - The path in 'value' must start with '/'

Ben Short picture Ben Short · Jan 24, 2017 · Viewed 9.7k times · Source

I have created a new .NET Core MVC application in Visual Studio 2017 and enabled multi-tenant authentication.
I've completed the configuration (ClientId, Authority, etc) but when I debug the application there is an exception in the Startup.cs, specifically the app.useOpenIdConnectAuthentication method.

The exception given is

System.ArgumentException: The path in 'value' must start with '/'.

I'm a bit of a novice when it comes to C# and .NET Core, so I'm not sure whether I'm missing something obvious. The main sticking point is what the debugger is referring to with the parameter 'value' as I can't see any mention of it in the code. There are no changes beyond the default template generated by visual studio, other than adding the configuration items to the appsettings.json.

Answer

Hakan Fıstık picture Hakan Fıstık · Oct 19, 2017

As there is no code in the question, so I will try to make a general answer as possible.
This exception appears when you use this overload PathString.FromUriComponent(string) and the string does not start with the / character

so,for example, the following code will throw an exception :

PathString.FromUriComponent("controllerName/actionName"); // throw exception

and to fix the previous exception you can write it like this

PathString.FromUriComponent("/controllerName/actionName"); // working, but as relative path

and of course, this will be a relative path.

In case you wanted to use an absolute path, (and not start your string with /), then you must use another overload of this method which takes Uri object as a parameter instead of string

here is an example

// use an absolute path
PathString.FromUriComponent(new Uri("https://localhost:8000/controller/action/"))