2

我需要将 IIS 6 配置为使用工作进程的自定义标识来托管面向 .NET Framework 4.0 的 WCF 服务。身份是一个高度受限的域帐户,用于识别和管理在同一业务流程中交互的整个服务生态系统的权限。

我已运行带有 -ga 标志的 aspnet_regiis.exe,以将此身份权限授予服务器环境中的相关 ASP.NET 位置,并将其添加到 IIS_WPG 组中。在大多数情况下,一切似乎都比较顺利……除了自动生成的 WSDL 规范的包含。访问顶级 WSDL 规范工作正常(即 path.to/MyService.svc?wsdl),但 IIS 6 在返回 WSDL 包含的响应之前重置连接(即 path.to/MyService.svc?xsd=xsd0 , ETC)。当通过服务器上的环回访问和通过公共 IP 访问时,都会发生这种情况。重新配置应用程序池以在默认网络服务帐户下运行时不会发生这种情况。

我还没有找到任何关于这个特定问题的文档,但这并不是我第一次遇到当 IIS 6 工作进程在自定义域标识下运行时 .NET Framework 的某些部分无法正常工作时遇到的困难。我没有在本地安全策略中为此帐户配置任何特殊权限,除了预先配置的 IIS_WPG 成员作为批处理作业登录的权限。为了让工作人员正常工作,我可能缺少什么?

编辑:

事件查看器不包含任何错误,并且 IIS 日志显示服务器以 200 OK 响应请求,但完整状态值为200 0 64,表示 Win32 状态代码为 64。

我收到的关于该错误的转储net helpmsg 64如下:

指定的网络名称不再可用。

各实体的回应如下:

  • Chrome:错误 101 (net::ERR_CONNECTION_RESET):连接已重置
  • Firefox:页面加载时与服务器的连接被重置
  • Eclipse/Java: java.net.SocketException:连接重置

编辑:

服务日志记录(由BNL提供)产生以下异常转储:

System.InvalidOperationException:无法生成临时类(结果 = 1)。错误 CS2001:找不到源文件“C:\WINDOWS\TEMP\vxmgwmnl.0.cs”。错误 CS2008:未指定输入。

在 System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence) at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence) at System.Xml.Serialization.XmlSerializer.. System.ServiceModel.Description.ServiceMetadataExtension.HttpGetImpl.XmlSchemaMessage 的 System.Xml.Schema.XmlSchema.Write(XmlWriter writer, XmlNamespaceManager namespaceManager) 的ctor(类型类型,字符串 defaultNamespace)。System.ServiceModel.Channels.BufferedMessageWriter.WriteMessage(消息消息,BufferManager bufferManager,Int32 initialOffset,Int32 maxSizeQuota)在 System.ServiceModel.Channels.Message.OnWriteMessage(XmlDictionaryWriter writer)在 System.ServiceModel.Channels.TextMessageEncoderFactory 的 OnWriteBodyContents(XmlDictionaryWriter writer) .TextMessageEncoder.WriteMessage(Message message, Int32 maxMessageSize, BufferManager bufferManager, Int32 messageOffset) 在 System.ServiceModel.Channels.HttpOutput.SerializeBufferedMessage(Message message) 在 System.ServiceModel.Channels.HttpOutput.Send(TimeSpan timeout) 在 System.ServiceModel。 Channels.HttpRequestContext.OnReply(消息消息,TimeSpan 超时)在 System.ServiceModel.Channels.RequestContextBase.Reply(消息消息,TimeSpan 超时)在 System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.Reply(MessageRpc& rpc)

4

1 回答 1

0

使用 Microsoft KB 文章Error message when ASP.NET 2.0 is configured to run with a user account: "Unable to generate a temporary class"中的指南,我找到了 C:\Windows\Temp 目录并正确检查了它的文件夹属性-单击并选择Properties。然后我导航到Security选项卡并单击Advanced,然后单击Add。我在本地计算机上输入了 IIS_WPG 组的名称,并只允许它具有特殊权限List Folder / Read Data。现在已经解决了这个问题。

于 2012-09-19T14:36:36.410 回答