与Web服务配置堆叠在一起

时间:2011-11-28 01:44:18

标签: c# wcf web-services

我目前正在使用即时创建的网络服务。在本地测试它一切正常,但当我尝试将其部署到Web服务器时,它会抛出以下错误

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

这是我的网络配置。

<?xml version="1.0"?>
<configuration>
  <configSections>
  </configSections>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
    </modules>
    <validation validateIntegratedModeConfiguration="false" />
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="2000000000" />
      </requestFiltering>
    </security>
  </system.webServer>
  <connectionStrings>
    <add name="........" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <!-- Testing -->
    <add key="DataConnectionString" value="..........." />
   </appSettings>
   <system.web>
     <compilation debug="true" targetFramework="4.0">
       <buildProviders>
         <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
       </buildProviders>
     </compilation>
     <httpRuntime executionTimeout="1200" maxRequestLength="2000000" />
   </system.web>
   <system.serviceModel>
     <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
     <behaviors>
       <serviceBehaviors>
         <behavior name="Service1">
           <serviceMetadata httpGetEnabled="true" />
           <serviceDebug includeExceptionDetailInFaults="true" />
           <dataContractSerializer maxItemsInObjectGraph="2000000000" />
         </behavior>
         <behavior name="">
           <serviceMetadata httpGetEnabled="true" />
           <serviceDebug includeExceptionDetailInFaults="false" />
         </behavior>
         <behavior name="nextSPOTServiceBehavior">
           <serviceMetadata httpsGetEnabled="true"/>
           <serviceDebug includeExceptionDetailInFaults="true" />
           <dataContractSerializer maxItemsInObjectGraph="2000000000" />
         </behavior>
       </serviceBehaviors>
     </behaviors>
     <bindings>
       <basicHttpBinding>
         <binding name="SecureBasic" closeTimeout="00:10:00"
              openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
              maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
           <security mode="Transport" />
           <readerQuotas maxArrayLength="2000000" maxStringContentLength="2000000"/>
         </binding>
         <binding name="BasicHttpBinding_IDownloadManagerService" closeTimeout="00:10:00"
            openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"
            maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
           <security mode="Transport" />
         </binding>
       </basicHttpBinding>
     </bindings>
     <services>   
       <service behaviorConfiguration="nextSPOTServiceBehavior" name="NextSPOTDownloadManagerWebServiceTester.Web.WebServices.DownloadManagerService">
         <endpoint binding="basicHttpBinding" bindingConfiguration="SecureBasic" name="basicHttpSecure" contract="NextSPOTDownloadManagerWebServiceTester.Web.WebServices.IDownloadManagerService" />
         <!--<endpoint binding="basicHttpBinding" bindingConfiguration="" name="basicHttp" contract="NextSPOTDownloadManagerWebServiceTester.Web.WebServices.IDownloadManagerService" />-->
         <!--<endpoint address="" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDownloadManagerService" contract="NextSPOTDownloadManagerWebServiceTester.Web.WebServices.IDownloadManagerService" />
         <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />-->
       </service>
     </services >
   </system.serviceModel>
 </configuration>

客户访问政策

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

CROSS域名政策

 <?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="*"/>
 </cross-domain-policy>

1 个答案:

答案 0 :(得分:1)

这听起来像是当您尝试使用silverlight从未托管的Web服务访问时获得的错误。如果是这种情况,则需要将clientaccesspolicy.xml添加到Web应用程序文件夹中。

MSDN有关允许对silverlight应用程序进行跨域访问的文章。