По умолчанию учетные данные наследуются от пула приложений IIS.Вы можете запустить ваше приложение под учетной записью пользователя, у которого есть разрешение на доступ к пути unc.
В качестве другого обходного пути вы можете попробовать
[Route("api/[controller]")]
[ApiController]
public class ValuesController : ControllerBase
{
[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword,
int dwLogonType, int dwLogonProvider, out SafeAccessTokenHandle phToken);
const int LOGON32_PROVIDER_DEFAULT = 0;
//This parameter causes LogonUser to create a primary token.
const int LOGON32_LOGON_INTERACTIVE = 2;
// Call LogonUser to obtain a handle to an access token.
SafeAccessTokenHandle safeAccessTokenHandle;
[HttpGet, Route("success")]
public string Success()
{
bool returnValue = LogonUser("username","domain" ,"password",
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
out safeAccessTokenHandle);
WindowsIdentity.RunImpersonated(safeAccessTokenHandle, () =>
{
var folder = @"\\unc path";
Directory.CreateDirectory(folder); // it throws exception saying access to the path is denied
});
return "Success Response";
}
}