【问题标题】:WCF Deployment to IIS 6 Results in 403 Permission ErrorWCF 部署到 IIS 6 导致 403 权限错误
【发布时间】:2011-01-18 23:24:21
【问题描述】:

我以前从未将 WCF 服务部署到 IIS 6。我通过使用默认配置作为 WCF 项目的一部分来部署到 IIS 6 的服务。从那以后,我简化了可能是问题的配置思想。这是我在浏览器中浏览服务时遇到的错误:

HTTP 错误 403.1 - 禁止:执行 访问被拒绝。

我的配置现在如下所示:

<system.serviceModel>
    <services>
        <service name="MyCompany.WebServices.MyService">
            <endpoint address="" binding="basicHttpBinding" contract="MyCompany.WebServices.IMyService" />
        </service>
    </services>
</system.serviceModel>

如果我尝试将其添加为 ASP.NET MVC 中的引用,我会得到以下信息:

下载时出错 'http://ws.mycompany.com/MyService.svc'。 请求失败,HTTP 状态 403:禁止。元数据包含一个 无法解决的参考: 'http://ws.mycompany.com/MyService.svc'。 HTTP 请求被禁止 客户端认证方案 '匿名的'。远程服务器 返回错误:(403)禁止。如果 该服务在当前定义 解决方案,尝试构建解决方案 并添加服务参考 再次。

有什么想法吗?

更新:

这似乎是我的 IIS 6 机器上的配置问题。我假设这是因为我创建了一个全新的 ASP.NET 3.5 WCF 应用程序并将其部署到http://ws.unitedoneresources.com/Service1.svc 的新 URL。如果我尝试调用该服务,我会收到上面列出的相同 HTTP 错误。整个服务配置如下:

  <system.serviceModel>
    <services>
      <service name="WcfService1.Service1" behaviorConfiguration="WcfService1.Service1Behavior">
        <!-- Service Endpoints -->
        <endpoint address="" binding="wsHttpBinding" contract="WcfService1.IService1">
          <!-- 
              Upon deployment, the following identity element should be removed or replaced to reflect the 
              identity under which the deployed service runs.  If removed, WCF will infer an appropriate identity 
              automatically.
          -->
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WcfService1.Service1Behavior">
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

同样,这是一个全新的 ASP.NET 3.5 WCF 应用程序,所以我没有对项目本身进行任何修改。

【问题讨论】:

  • 服务是否托管在您查询的同一台计算机上?
  • 不。一个是数据库服务器,另一个是 IIS 服务器。数据库调用都在使用 EF 的类库中处理。
  • 我已经更新了上面的问题。我尝试将 IIS Web 设置为具有执行权限,重新启动 IIS,但这不起作用。我也在 IIS7 机器上尝试过,但无济于事。这一定是我做错了什么。

标签: wcf iis iis-6 wcf-security


【解决方案1】:

我破坏了网站,在 IIS 6 上安装了 WCF(在命令提示符下使用 ServiceModelReg.exe /i /x),然后重新部署。成功了!

谢谢!

【讨论】:

    【解决方案2】:

    发现这个问题正在寻找相同问题的解决方案。我忘记在服务目录上更改“脚本和可执行文件”的权限。我在 II7

    【讨论】:

      【解决方案3】:

      您并没有真正给我们提供很多内容 - 缺少向我们展示您如何设置安全性的服务器端配置位 - 您能否更新您的问题并向我们展示一切 在服务器端配置和调用服务器的客户端上的 &lt;system.serviceModel&gt; 标记内??

      只是从系统默认值中猜测,使用basicHttpBinding 会导致默认安全设置为空 - 并且看起来好像您的服务器端配置需要某种形式的安全性。看起来好像您的安全设置不同步,从而导致了这个错误。

      还有一点是:你是如何设置 IIS 端的?您是否为您的服务创建了一个虚拟目录?基本上,在 IIS 中托管时,您的服务 URL 由服务器名称(可能加上端口)、*.svc 文件所在的虚拟目录以及 svc 文件本身的名称和扩展名决定。

      【讨论】:

      • 在服务器端,我上面列出的就是我现在所拥有的。在客户端,同样,只是一个普通的 ASP.NET MVC 应用程序。在 IIS 中,该服务设置在一个全新的网站中,其中没有任何其他内容。
      • @Jason:好的,但是你能不能也给我们看看客户端配置 - 一定有一些配置!
      • @Jason:那么您是否为您的服务创建了一个单独的虚拟目录?您是否将 *.svc 文件放入该目录?我似乎在您的 URL 中没有看到任何虚拟目录:'http://ws.mycompany.com/MyService.svc' 还是我遗漏了什么?通常它是http://server/virtualdir/yourservice.svc 或类似的东西——你的 URL 中似乎没有“virtualdir”部分
      • 不,该 URL 位于一个名为 ws.mycompany.com 的全新网站中。其次,我认为我应该能够浏览到它。当您要求客户端配置时,如果我只是通过网络浏览到它,我将没有任何配置。如果我尝试创建一个全新的 ASP.NET 或 ASP.NET MVC 项目,我将保留默认配置并尝试右键单击该项目并选择“添加服务引用”。当我输入该 URL 时,我得到另一个异常。所以,我想我很困惑为什么客户端配置会导致这种情况。
      • @Jason:这让我感到困惑——你一直说你“只是浏览”到该网站——这是否意味着你正在(或想要)使用 REST?因为如果是这样的话,那么你的服务器端绑定就是错误的——你必须使用 webHttpBinding 而不是 basicHttpBinding........跨度>
      【解决方案4】:

      我们有类似的症状,但仅在 IIS 6.0 下使用 PUT 和 DELETE 动词。

      默认情况下,我们的 IIS 应用程序中的 .svc 扩展名只允许 GET、POST 动词。

      为应用程序的 .svc 扩展添加动词(或允许所有动词)解决了该问题。

      【讨论】:

        猜你喜欢
        • 2021-04-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-07
        • 1970-01-01
        • 2014-08-07
        相关资源
        最近更新 更多