猿问

ASP .Net Core 2 自包含部署在不同应用程序池标识帐户下的 IIS 中给出

我有一个面向 netcoreapp2.1 的 ASP .Net Core 2 Web Api 应用程序,并作为独立(生成一个 exe)部署到 IIS。

在此服务器上,应用程序将与配置为在特定 AD 帐户下运行的现有应用程序池一起使用。

当我们将其更改为使用与第一个帐户具有相同文件夹权限的其他帐户时,该应用程序将无法启动并出现 502.5 错误。

这是真正奇怪的部分。如果我们运行另一个指向同一个应用程序文件夹的站点,但在第一个 AD 帐户下它可以工作,然后使用第二个 AD 帐户运行该站点,它现在可以正常工作。

另一个信息,应用程序文件的物理位置在网络共享上。当我们将物理文件移动到 IIS 服务器(在本地运行它)时,它会工作,但由于我们的企业设置,这不是生产中的选项。因此,它似乎与使用 UNC 文件路径从网络共享启动 exe 的某种权限/策略有关。


当年话下
浏览 225回答 2
2回答

慕婉清6462132

对于我们的问题,事实证明运行站点的帐户必须在 NAS 文件共享路径的每个目录级别都具有读取权限。完成此操作后,服务器正确启动。

杨__羊羊

您只能获得第一级属性的已知类型。在您的代码中,您只能获取Debtor类型,但您还应该处理此属性以获取Address类型,例如通过递归。private static string BatchItem_NFSerialization(INF Alldebtors){&nbsp; &nbsp; Type t = Alldebtors.GetType();&nbsp; &nbsp; var extraTypes1 = GetKnownTypes(Alldebtors);&nbsp; &nbsp; using (MemoryStream ms = new MemoryStream())&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; DataContractJsonSerializer serializer = new DataContractJsonSerializer(t, extraTypes1);&nbsp; &nbsp; &nbsp; &nbsp; serializer.WriteObject(ms, ((BatchItem_NF)Alldebtors));&nbsp; &nbsp; &nbsp; &nbsp; var retVal = Encoding.Default.GetString(ms.ToArray());&nbsp; &nbsp; &nbsp; &nbsp; return retVal;&nbsp; &nbsp; }}private static IEnumerable<Type> GetKnownTypes(object property){&nbsp; &nbsp; Type t = property.GetType();&nbsp; &nbsp; var extraValues = t.GetProperties()&nbsp; &nbsp; &nbsp; &nbsp; .Where(p => p.PropertyType.IsInterface && !p.PropertyType.IsGenericType)&nbsp; &nbsp; &nbsp; &nbsp; .Select(p => p.GetValue(property, null))&nbsp; &nbsp; &nbsp; &nbsp; .ToArray();&nbsp; &nbsp; var extraTypes = extraValues.SelectMany(GetKnownTypes).ToArray();&nbsp; &nbsp; return extraValues.Select(v => v.GetType()).Concat(extraTypes).ToArray();}
随时随地看视频慕课网APP
我要回答