代码之家  ›  专栏  ›  技术社区  ›  Kirk Broadhurst

从IIS进程(WCF和WF)通过HTTPS发布时出现问题

  •  1
  • Kirk Broadhurst  · 技术社区  · 14 年前

    System.Exception: Failed to connect to host Input Server Uri = https://pilot-payflowpro.paypal.com/ 从API对象。

    • 这门课一字不差。
    • 我以管理员身份登录,因此控制台应用程序以管理员身份运行。因此,我尝试使用网站应用程序池的管理员帐户(显然,仅用于此测试)

    在IIS中有什么我需要调整的地方来允许应用程序在外部通信吗?有什么明显的安全设置我忽略了吗?对运行测试用例以找出可能发生的情况有什么建议吗?

    edit:发现这个问题与运行服务器的VM环境有关。这个问题不会发生在我的开发箱、测试服务器或生产服务器上—它只发生在集成服务器上。原因还不清楚,但我已经不在研究了。

    2 回复  |  直到 14 年前
        1
  •  1
  •   erlando    14 年前

    这可能是由于ASP.NET信任配置问题。要检查信任级别,请在编辑器中打开以下文件:

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG\web.config (如果ASP.NET2.0)

    C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\CONFIG\web.config

    您可能还需要编辑 C:\WINDOWS\Microsoft.NET\Framework64 如果您在64位Windows上运行,请选择这些版本。

    <securityPolicy>

    <location allowOverride="false">
        <system.web>
            <securityPolicy>
                <trustLevel name="Full" policyFile="internal"/>
                <trustLevel name="High" policyFile="web_hightrust.config"/>
                <trustLevel name="Medium" policyFile="web_mediumtrust.config"/>
                <trustLevel name="Low" policyFile="web_lowtrust.config"/>
                <trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
            </securityPolicy>
            <trust level="Medium" originUrl=""/>
        </system.web>
    </location>
    

    如果你看到的不是 <trust level="Full" originUrl=""/> 这意味着服务器正在部分信任下运行。

    打开 .config 相关部门指定的文件 policyFile web_mediumtrust.config 如果 level="Medium" .

    找到 <NamedPermissionSets> 节,下面有一个 <PermissionSet> 看起来像:

    <PermissionSet
        class="NamedPermissionSet"
        version="1"
        Name="ASP.Net">
    

    <IPermission> 节点。找一个打电话的 WebPermission

    <IPermission
        class="WebPermission"
        version="1">
    

    如果丢失或看起来像:

    <IPermission
        class="WebPermission"
        version="1">
        <ConnectAccess>
            <URI uri="$OriginHost$"/>
        </ConnectAccess>
     </IPermission>
    

    您需要添加或修改以下内容:

    <IPermission 
        class="WebPermission" 
        version="1" 
        Unrestricted="true"/>
    

    此设置控制应用程序对URI的出站和入站访问。

    可能还需要确保 SocketPermission

    <IPermission 
        class="SocketPermission" 
        version="1" 
        Unrestricted="true"/>
    
        2
  •  0
  •   Kirk Broadhurst    14 年前

    结果发现,这个问题在某种程度上与运行服务器的VM环境有关。这个问题不会发生在我的开发箱、测试服务器或生产服务器上—它只发生在集成服务器上。原因还不清楚,但我已经不在研究了。