WCF服务未与Windows 8上的silverlight4应用程序通信.IE 10. IIS 8.0

时间:2014-03-01 12:49:45

标签: wcf silverlight-4.0

有两个模块,一个是silverlight应用程序(如客户端),另一个是wcf服务,它是自托管服务。这里的应用程序都像客户端和服务器通信一样工作这两个应用程序在Windows 7和以前的版本中正常通信,但在win 8中没有。

有一个错误,如“ 尝试向URI“localhost:8283 / MyTestService”发出请求时发生错误。这可能是由于尝试在没有适当的跨域策略的情况下以跨域方式访问服务,或者是不适合SOAP服务的策略。您可能需要联系服务的所有者以发布跨域策略文件,并确保它允许发送与SOAP相关的HTTP标头。在不使用InternalsVisibleToAttribute属性的情况下,在Web服务代理中使用内部类型也可能导致此错误。有关更多详细信息,请参阅内部异常。“

我尝试了很多方式,我从互联网上提到但不能在Windows 8中创建它们之间的连接。

我试过这些方法: 1)。将两个文件clientaccesspolicy.xml和crossdomain.xml添加到MSN引用的IIS8(wwwroot)文件夹中。 2)。授予各个文件夹的所有权限。

可能的解决方案是什么? 1)。可能存在任何安全问题 2)。 Windows 8是企业版

如果需要更多详细信息,请在评论中告诉我。

我期待着你的回复..

1 个答案:

答案 0 :(得分:0)

经过R& D的大量工作,我获得了在Windows 8环境中运行silverlight和WCF服务的解决方案。我正在回答我的问题,如果它对任何陷入此类错误的人有帮助。

实际原因:

 No communication is creating in between CVT Service(WCF service) and CVT pages(silver light application) as client side. Whenever it compiled in windows 8 environment . Then the error caught was “ An error occurred while trying to make a request to URI ‘http://localhost:8283. This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, or a policy that is unsuitable for SOAP services. You may need to contact the owner of the service to publish a cross-domain policy file and to ensure it allows SOAP-related HTTP headers to be sent. Please see the inner exception for more details. “.

决议:

The actual problem is present in WCF service . Below steps to be followed to run the WCF service successfully and make it communicate properly with silver light application in windows 8 environment. In windows 7 and previous versions the settings related to WCF service work will be enabled by default but in win 8 few features might not be enabled in that case you can follow these below steps.

第1步:     创建两个XML文件并将其添加到wwwroot文件夹。此文件夹位于此路径“C:\ inetpub \ wwwroot”。

A)。 clientaccesspolicy.xml:

<xml version="1.0" encoding="utf-8">
        <access-policy>
        <cross-domain-access>
         <policy>
            <allow-from http-request-headers="*">
            <domain uri="*"/>
        </allow-from>
        <grant-to>
            <resource path="/" include-subpaths="true"/>
        </grant-to>
    </policy>
    </cross-domain-access>
    </access-policy>
</xml>

B)。 crossdomain.xml:

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-    policy.dtd">
<cross-domain-policy>
<allow-http-request-headers-from domain="*" headers="SOAPAction,Content-Type"/>
</cross-domain-policy>

步骤2:如果未激活此功能,请按照以下步骤启用此功能。

点击Windows + x。 选择程序和功能(列表中的第一项)。 选择左侧打开或关闭“打开Windows功能”。 展开.Net Framework 4.5高级服务。 展开WCF服务。 启用HTTP激活。

第3步:添加MIME类型和新的托管处理程序

WCF服务不能在具有默认配置的IIS 8上运行,因为Web服务器不知道如何处理针对.svc文件的传入请求。你可以分两步教它: 请参阅以下链接: https://gyorgybalassy.wordpress.com/2012/09/24/

第4步:应用程序应在Windows 8环境中编译。 我们需要按照以下步骤在Windows 8环境中运行此应用程序。