【问题标题】:clientaccesspolicy.xml suddenly stopped working (WCF/Silverlight)clientaccesspolicy.xml 突然停止工作(WCF/Silverlight)
【发布时间】:2012-03-13 17:16:45
【问题描述】:

对这一切感到非常沮丧,希望有人能提供帮助。

我有一个 Silverlight 应用程序和 WCF 一起工作一年没有问题。为了让他们工作,我最初有些痛苦,但最终在帮助下解决了。所有的痛苦都来自配置/安全、401、跨域地狱等。

我进行所有设置的方式是,我有一个 WCF 服务,它驻留在它自己的应用程序/目录中,并在它自己的应用程序池中运行。

在同一个 Web 服务器 (IIS7) 上,我有另一个应用程序/目录,其中包含指向上述服务的 Silverlight 应用程序。

服务器名称(对于本练习)是 WEBSERVER1。我们为它创建了一个 CNAME,即 WEB1。过去,如果用户访问http://WEB1/MyApp/http://WEBSERVER1/MyApp/,它会起作用。昨天突然开始表现不好。普通用户开始收到 Windows 质询/响应提示(即使他们输入了信息,他们也会收到 401 错误)。

我的 WCF 服务在允许匿名访问的站点中运行(这一直有效)。 我的 Silverlight 应用程序在一个集成了 Windows 的站点中运行(这一直有效),因为我在它们连接时捕获了 Windows 用户名。

作为记录,我昨天确实创建了一个新的应用程序池,其中运行了一个 ASP.NET 应用程序。这似乎工作正常,但有可能创建这个新的应用程序池和应用程序/目录已经导致一些变化。

我的 wwwroot 文件夹以及上述两个应用程序的每个文件夹中都有一个 clientaccesspolicy.xml(以防万一)。我曾尝试将 NTLM 推广为提供者而不是 Negotiate(因为这适用于我在另一台服务器上遇到的另一个问题)。

在尝试了一些更改之后,我什至无法让每次调用它时都表现得一样。有时它会提示我输入凭据。其他时候它会工作,但后来说它无法与 WCF 服务连接,并显示“未找到”。其他时候它实际上可以正常工作,但前提是我使用的是实际的服务器名称而不是 CNAME。使用 CNAME 时,我总是遇到跨域错误,即使我在每个目录根目录中都有跨域 xml 文件。

这是一场噩梦,相比之下,高级算法分析看起来既有趣又容易。 Microsoft 是否意识到他们使这种组合(IIS7/WCF/Silverlight/providers/permissions/神秘或缺少错误消息)开始工作有多么困难?

【问题讨论】:

  • 你能运行 Fiddler 并在此处添加日志,以便我们查看发生了什么吗? fiddler2.com 供下载。
  • 我实际上是在运行 Fiddler2,会尝试用日志更新
  • 不确定如何在此处添加日志,但有一行查找根目录并获得 200(成功)。下一行查找 /app/Silverlight.js,它返回 304(缓存?)。下一行是 /clientaccesspolicy.xml 的 401 错误(即使该文件存在),下一行是 /crossdomain.xml 文件的 401。

标签: wcf silverlight iis-7


【解决方案1】:

我找到了一个似乎有效的解决方案。

在这种情况下,我必须将默认网站(托管 clientaccesspolicy.xml 文件)的身份验证模式从匿名访问更改为 Windows 集成。我不明白为什么这工作了一年左右然后停止了,但它似乎已经解决了。

我昨天部署的新应用程序是一个标准的 ASP.NET Web 应用程序,我将它放在它自己的应用程序目录和它自己的应用程序池中,以确保它不会导致此类问题。我什至不确定是不是。

我解决它的方法是尝试从我的 PC 导航到实际的 http://servername/clientaccesspolicy.xml 文件,这给了我一个 401 错误。我从匿名切换到集成在该默认网站上的窗口(其中除了那个 xml 文件之外什么都没有)并且解决了权限问题。然后,我必须允许实际的 AD 组对该文件夹具有读取权限(如果没有,他们会收到用户/密码提示并且无法通过)。

【讨论】:

    猜你喜欢
    • 2017-08-22
    • 2021-02-01
    • 2016-12-29
    • 2018-05-09
    • 2015-12-07
    • 2015-08-23
    • 2014-02-05
    • 2013-09-06
    相关资源
    最近更新 更多