Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Los ingenieros de soporte técnico de Microsoft están disponibles para ayudar a diagnosticar problemas con la aplicación. Si no puede diagnosticar el problema después de pasar por este artículo, puede presentar una incidencia de soporte técnico; para ello, vaya a la sección Soporte> técnicoy solución de problemas del recurso del programador de tareas duradero en Azure Portal.
Comprobar la cadena de conexión y el acceso al programador de tareas persistente
Cuando la aplicación no se ejecute según lo previsto, compruebe primero si tiene lo siguiente:
- Formato de cadena de conexión correcto.
- La autenticación se configura correctamente.
Desarrollo local
Compruebe la cadena de conexión, que debe tener este formato:
Endpoint=http://localhost:<port number>;Authentication=None
. Asegúrese de que el número de puerto es el asignado a8080
en el contenedor que ejecuta el emulador del planificador de tareas duradero.Junto con el emulador del programador de tareas duraderas, asegúrese de que se inicie el emulador de Azure Storage, Azurite. Azurite es necesario para los componentes de la aplicación relacionados con Functions.
Ejecución en Azure
Compruebe la aplicación para ver las variables
DURABLE_TASK_SCHEDULER_CONNECTION_STRING
de entorno yTASKHUB_NAME
.Compruebe el valor de
DURABLE_TASK_SCHEDULER_CONNECTION_STRING
. En concreto, compruebe que el punto de conexión del programador y el tipo de autenticación son correctos. La cadena de conexión debe tener el formato siguiente al usar:-
Identidad administrada asignada por el usuario:
Endpoint={scheduler endpoint};Authentication=ManagedIdentity;ClientID={client id}
, dondeclient id
es el identificador de cliente de la identidad. -
Identidad administrada asignada por el sistema:
Endpoint={scheduler endpoint};Authentication=ManagedIdentity
-
Identidad administrada asignada por el usuario:
Asegúrese de que se concede el permiso de control de acceso basado en rol (RBAC) necesario a la identidad que necesita para acceder al centro de tareas o programador especificados.
- Al acceder al panel, asegúrese de que el permiso se asigna a su propia identidad (correo electrónico).
Si se usa la identidad administrada asignada por el usuario, asegúrese de que la identidad se asigna a la aplicación.
Error al implementar la aplicación de Funciones Duraderas en Azure
Si se produce un error en la implementación, como Encountered an error (ServiceUnavailable) from host runtime
desde Visual Studio Code, compruebe primero la aplicación para asegurarse de que las variables de entorno necesarias están configuradas correctamente. A continuación, vuelva a implementar la aplicación. Si ve un error al cargar funciones, haga clic en el botón "Actualizar".
Error desconocido al recuperar detalles de este centro de tareas
Si recibe un error Unknown error retrieving details of this task hub
en el panel del programador de tareas duraderas, el motivo podría ser:
La identidad (correo electrónico) no tiene el permiso necesario asignado para esa central de tareas. Siga las instrucciones para conceder el permiso y, a continuación, vuelva a acceder al panel.
Se eliminó el hub de tareas.
No se puede eliminar el recurso
Asegúrese de eliminar todos los centros de tareas en el entorno del programador de tareas duradero. Si no lo ha hecho, recibirá el siguiente mensaje de error:
{
"error": {
"code": "CannotDeleteResource",
"message": "Cannot delete resource while nested resources exist. Some existing nested resource IDs include: 'Microsoft.DurableTask/schedulers/YOUR_SCHEDULER/taskhubs/YOUR_TASKHUB'. Please delete all nested resources before deleting this resource."
}
}
No se puede determinar el proyecto que se va a compilar
Si, después de iniciar Azurite, se produce el error: “Can't determine Project to build. Expected 1 .csproj or .fsproj but found 2”
:
- Elimine los directorios bin y obj de la aplicación.
- Prueba a ejecutar
func start
de nuevo.
No se pueden encontrar archivos binarios nativos para ARM
Si ve errores de gRPC relacionados con no encontrar archivos binarios nativos para ARM (por ejemplo, en un equipo Mac Mx), es posible que tenga que agregar la siguiente solución alternativa al final del extensions.csproj
archivo.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<WarningsAsErrors></WarningsAsErrors>
<DefaultItemExcludes>**</DefaultItemExcludes>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask" Version="2.13.7" />
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.DurableTask.AzureManaged" Version="0.3.0-alpha" />
<PackageReference Include="Microsoft.Azure.WebJobs.Script.ExtensionsMetadataGenerator" Version="1.1.3" />
</ItemGroup>
<!-- Add the below groups/targets to workaround gRPC issues on ARM devices. -->
<ItemGroup>
<PackageReference Include="Contrib.Grpc.Core.M1" Version="2.41.0" />
</ItemGroup>
<Target Name="CopyGrpcNativeAssetsToOutDir" AfterTargets="Build">
<ItemGroup>
<NativeAssetToCopy Condition="$([MSBuild]::IsOSPlatform('OSX'))" Include="$(OutDir)runtimes/osx-arm64/native/*"/>
</ItemGroup>
<Copy SourceFiles="@(NativeAssetToCopy)" DestinationFolder="$(OutDir).azurefunctions/runtimes/osx-arm64/native"/>
</Target>
</Project>
Experimenta problemas en tiempo de ejecución de gRPC
En el caso de los usuarios de Mx Mac (ARM64), podría encontrarse con problemas de runtime de gRPC con funciones duraderas. Como solución alternativa:
Haga referencia a la versión
2.41.0
del paquete NuGetContrib.Grpc.Core.M1
.Agregue un destino posterior a la compilación personalizado que garantice que se puede encontrar la versión correcta de ARM64 de las bibliotecas gRPC.
<Project> <ItemGroup> <PackageReference Include="Contrib.Grpc.Core.M1" Version="2.41.0" /> </ItemGroup> <Target Name="CopyGrpcNativeAssetsToOutDir" AfterTargets="Build"> <ItemGroup> <NativeAssetToCopy Condition="$([MSBuild]::IsOSPlatform('OSX'))" Include="$(OutDir)runtimes/osx-arm64/native/*"/> </ItemGroup> <Copy SourceFiles="@(NativeAssetToCopy)" DestinationFolder="$(OutDir).azurefunctions/runtimes/osx-arm64/native"/> </Target> </Project>