This code is not so easy to understand. You can change the entire code of the 'foreach' loop into one single Linq statement (assume you change the method name to IsValidPartName).

return logicalPartName.Split('/').All( s => !s.EndsWith('.', StringComparison.OrdinalIgnoreCase) && s.Any(c => c != '.'));

There's a tiny perf hit due to string construction but that's negligible and it has better readability.