我有一个 WCF 组件,它是我在 VS 2008(使用 .NET framework 3.5)中编写的,安装在 Windows 2003 Server 上。我在使用其中一种方法时遇到了一些问题,为了尝试调试问题,我被建议向 Web.Config 文件添加一些诊断信息。现在,这个 WCF 服务器此时根本没有得到太多使用,所以我可以只在 Web.Confilg 文件中进行编辑,然后用我的新客户端应用程序运行测试吗?或者我是否必须停止并重新启动 Windows 2003 Server 上的 IIS?
我们有一个 WCF 服务托管在一组 12 台机器上。有一个负载平衡器是这些机器的网关。
现在站点设置为 SSL;就像用户通过使用带有 https 的 URL 访问它一样。我知道这么多,该站点的 URL 是 https,但没有任何服务器具有 https 绑定或设置为需要 SSL。这让我相信负载平衡器处理 https 并且从平衡器到服务器的连接是未加密的(这发生在防火墙后面,所以没什么大不了的)。
我们遇到的问题是,当 Silverlight 客户端尝试访问 WCF 服务时,它会收到“未找到”错误。我已经与我们的开发人员机器一起建立了一个测试站点,并确保 web.config 中的绑定和端点与客户端一起工作。在生产环境中,我们收到此错误似乎就是这种情况。
下面的 web.config 有什么问题吗?我们应该设置如何以不同的方式处理 https 吗?
我们目前对此不知所措,因为我已经尝试了所有带有端点和绑定的程序化解决方案。我发现的所有解决方案都没有以我们处理的方式处理负载平衡器。
Web.config 服务模型信息:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="TradePMR.OMS.Framework.Services.CRM.CRMServiceBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
<behavior name="TradePMR.OMS.Framework.Services.AccountAggregation.AccountAggregationBehavior">
<serviceMetadata httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<customBinding>
<binding name="SecureCRMCustomBinding">
<binaryMessageEncoding />
<httpsTransport />
</binding>
<binding name="SecureAACustomBinding">
<binaryMessageEncoding />
<httpsTransport />
</binding>
</customBinding>
<mexHttpsBinding>
<binding name="SecureMex" />
</mexHttpsBinding>
</bindings> …Run Code Online (Sandbox Code Playgroud) 我设置了 IIS 并为我的网络服务提供服务。不幸的是,如果网络服务抛出异常,我得到的只是一个带有标题失败请求的蓝色框。
我有什么选择才能真正看到哪里出了问题?我更喜欢获取异常消息和堆栈跟踪。
我已经设置了“失败的请求跟踪”,但目录仍然是空的。如果可能,我更愿意直接在浏览器中获取堆栈跟踪。
如果这很重要:我在 Win 7 64 Pro 机器上有一个 IIS 7.5。Web 服务是一个 WCF C# 项目。
在 Web 应用程序中,我有一个 WCF 服务使用客户端证书身份验证。我在 IIS - SSL 设置中检查了“接受客户端证书”,它工作正常。但有时,在某些浏览器中,如果客户端计算机上安装了证书,浏览器会提示一条消息,选择它想要提供给服务器的证书,这不是我们想要的行为,因为只有Web 服务需要证书 -不是网络应用程序!。
如何在不为 IIS 上的 Web 服务创建独立 Web 项目的情况下处理它?
我有一些在 IIS 7.5 下运行的 WCF web 服务,它们正确响应 http 请求,但在使用 SSL 调用方法时响应 404(未找到)错误。
该站点的绑定如下:
当调用http://127.0.0.1:8088/Public/PublicDataService.svc 时,我得到了预期的响应:
您已经创建了一个服务。
要测试此服务,您需要创建一个客户端并使用它来调用该服务。您可以使用命令行中的 svcutil.exe 工具使用以下语法执行此操作:等
同样,调用任何 Service 方法都有效,有一个最基本的方法叫做 CanConnect,它只返回“true”
http://127.0.0.1:8088/Public/PublicDataService.svc/CanConnect
真的
使用 https 时,结果如下。
https://127.0.0.1/Public/PublicDataService.svc
您已经创建了一个服务。
要测试此服务,您需要创建一个客户端并使用它来调用该服务。您可以使用以下语法从命令行使用 svcutil.exe 工具执行此操作:
https://127.0.0.1/Public/PublicDataService.svc/CanConnect
“/Public”应用程序中的服务器错误。
无法找到该资源。
描述:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、更改名称或暂时不可用。请检查以下 URL 并确保其拼写正确。
请求的 URL:/Public/PublicDataService.svc/CanConnect
版本信息:Microsoft .NET Framework 版本:4.0.30319;ASP.NET 版本:4.6.1055.0
这让我完全被难住了,如何调用 .svc 工作但它的内部方法给出 404?更令人困惑的是,这是有效的……事实上,我什至不确定它何时停止,即它是否对应于代码发布或服务器补丁等。
网站的实际配置是这样的:
Webservices (this is the root of the application / where the Web.Config sits)
- Public (a windows directory, no addition config)
Run Code Online (Sandbox Code Playgroud)
还有许多其他服务直接在根目录下运行,它们在 http 和 https 下都运行良好。 …
我构建了一个基本的 WCF 服务,我现在想要在 Windows Server 2008 R2 下的 IIS7 中托管该服务。
我将该服务添加为默认网站下的应用程序,但每当我尝试运行该应用程序时,都会出现以下错误:
HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid.
Config Error - Cannot read configuration file due to insufficient permissions
使此服务正常工作的唯一方法是在添加服务时选择“以服务器管理员身份连接”。“应用程序用户(直通身份验证)”选项似乎不起作用。
任何人都可以帮助我,我刚开始使用 IIS7,不知道该怎么做...谢谢
我在 Windows Vista 双核 CPU 上使用 IIS7。第一次使用 WCF 服务或 ASP.NET webform 有时需要超过一分钟的时间,这对我来说是不可接受的。
我将应用程序配置为使用 Classic .NET 应用程序池并尝试使用Maximum worker processes,首先将其设置为 4,但将其重新设置为 1,因为它没有达到预期的结果。还有其他我可以尝试的事情吗?
遇到一个奇怪的问题,我找不到任何线索。我们有一个程序 (Qlikview),它通过 SSL(Qlikview 服务器)与远程管理服务对话,但它使用证书来验证客户端。
该问题发生在任何客户端计算机上(在不同的机器上复制)。该过程发生/复制问题:
在本地计算机 > 个人上安装带有私钥的 .pfx 证书。(使用 MMC 控制台)。
应用程序启动(完美运行)并且可以使用证书。
重新启动 PC,应用程序失败并显示错误消息:无法为具有授权的 SSL/TLS 建立安全通道(由于证书错误)
重新安装证书和应用程序再次工作。
重新启动 PC,应用程序无法再次运行。(重复过程)。
为了看看我们是否可以进一步复制,我导出然后重新导入失败的证书,应用程序再次运行。我们可以将其复制到使用相同身份验证方法的其他应用程序中。任一阶段(在 MMC 中查看)的证书在每一步都显示为有效且正确。
我真的很茫然。任何建议表示赞赏。
鉴于:


这不是一种闲散的好奇。我有一个真正的问题,如果没有这个特权,命名管道 WCF 绑定在 Windows 2008 和 Windows 7 上都不起作用!这里有一个关于这个问题的有趣讨论 - http://social.msdn.microsoft.com/forums/en-US/wcf/thread/b71cfd4d-3e7f-4d76-9561-1e6070414620。
有谁知道如何使这项工作?谢谢。
编辑
顺便说一句,当我运行提升的进程时,一切都很好,进程资源管理器确实按预期显示了特权:

但我不想把它抬高运行。
编辑2
我同样欢迎任何解决方案。无论是仅配置还是与代码混合。
编辑3
我在 MSDN 论坛上发布了同样的问题,他们将我重定向到此页面 - http://support.microsoft.com/default.aspx?scid=kb;EN-US;132958。我还没有确定它的相关性,但它看起来很有希望。
另请注意,这是他们提出的完全编码解决方案,因此无论是谁将这篇文章移至 ServerFault - 请在 StackOverflow 中将其恢复。
设置 IIS 以要求客户端证书并使用匿名身份验证
我有一个 WCF Web 服务供我们的客户使用。我想使用客户端证书来保护它。我还将使用客户端证书来识别客户。
我已经使标识部分工作,但我不能使 IIS 需要客户端证书。
如果我将 IIS 设置为接受客户端证书,则通信正常,我可以使用以下方法获取客户端身份:
ServiceSecurityContext.Current.PrimaryIdentity.Name
Run Code Online (Sandbox Code Playgroud)
但是我也可以在没有客户端证书的情况下访问该站点。我不确定那些没有阅读 WSDL 的人是否可以做任何其他事情,但我不希望任何没有受信任证书的人能够获得任何信息。
如果我将 IIS 设置为需要客户端证书,我应该有权访问的测试客户端会收到错误消息:
客户端身份验证方案“匿名”禁止 HTTP 请求。
我只想允许那些拥有服务器信任的客户端证书的人访问。其他任何人都将被拒绝。
服务器 WCF 配置:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="DefaultBehavior">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceCredentials>
<clientCertificate>
<authentication certificateValidationMode="ChainTrust" />
</clientCertificate>
<serviceCertificate findValue="64343ee2c8338518e78ba698f3936dc92c90db57" x509FindType="FindByThumbprint" />
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<wsHttpBinding>
<binding name="DefaultBinding">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Certificate" />
<message clientCredentialType="Certificate" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="WebService.Service" behaviorConfiguration="DefaultBehavior">
<endpoint address="" binding="wsHttpBinding" bindingConfiguration="DefaultBinding" contract="WebService.IService" />
<endpoint …Run Code Online (Sandbox Code Playgroud) 在 windows server 2003 上打开 windows "QUEUE MESSAGES" 时收到错误消息
"The list of messages cannot be retrieved. Error: Access is denied"
Run Code Online (Sandbox Code Playgroud)
为什么?
"The list of messages cannot be retrieved. Error: Access is denied."
Run Code Online (Sandbox Code Playgroud)
我有一个 WCF 应用程序。我想一直保持这个应用程序的运行。
如果有一段时间不活动,IIS 应用程序池会回收吗?
我如何让它一直保持活力?
我应该使用计时器吗?
我在应用程序中有敏感数据,填充它需要时间,这就是为什么我喜欢让它一直保持活动状态。