我正在尝试这个示例代码: http://www.dotnetcurry.com/ShowArticle.aspx?ID=624
一切似乎都没问题但是当它试图从WCF调用异步方法时它显示了这个异常(抱歉它只是西班牙语):
Se ha producido un error al intentar realizar una solicitud al URI 的 'https://samsung/WCF40_SSL_Service/Service.svc'。 Puede在一个un 意图加入了一个不受欢迎的主义者 unapolíticadentredominios adecuada en contexto ounapolíticano apropiada para servicios SOAP。 Es posible que necesite ponerse en contacto con el propietario del servicio para publicar un archivo de políticadentredominios y para asegurarse de que permite enviar encabezados HTTP relacionados con SOAP。 Esteerrortambiénpuede deberse al uso de tipos internos en el proxy de servicios web sin utilizar el atributo InternalsVisibleToAttribute。 Paraobtenermás información,consultelaexsentpcióninterna。
尝试对URI“https://samsung/WCF40_SSL_Service/Service.svc”执行请求时产生错误。由于访问服务的意图 控制中的配置在没有政治的情况下,在上下文中的适当控制或不适当的服务SOAP政治。可能需要与服务的所有者联系以在控件之间发布政治文件并确保允许发送与SOAP相关的标题HTTP。此错误也是由于在不使用属性InternalsVisibleToAttribute的情况下在服务Web代理中使用内部类型。要获取更多信息,请参阅内部例外。
在我看来,这似乎是一个“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>
我试图在fiddler中看到应用程序是否正在发送clientaccesspolicy.xml请求,但它不是!它甚至不试图找到文件......
我认为我必须遗漏一些微不足道的东西,但我无法意识到......有什么想法?
提前致谢!!!
服务器配置:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="SqlSecureConnection" connectionString="Data Source=.;
Initial Catalog=aspnetdb;Integrated Security=SSPI"/>
</connectionStrings>
<system.web>
<roleManager enabled="true" />
<authentication mode="Forms" />
<compilation debug="true" targetFramework="4.0" />
<membership defaultProvider="MySqlMembershipProvider"
userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="MySqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="SqlSecureConnection"
applicationName="/"
enablePasswordRetrieval="false"
enablePasswordReset="false"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="true"
passwordFormat="Hashed" />
</providers>
</membership>
</system.web>
<system.serviceModel>
<services>
<service name="WCF_SecureService.Service"
behaviorConfiguration="ServBehave">
<endpoint
address=""
binding="customBinding"
bindingConfiguration="custBind"
contract="WCF_SecureService.IService">
</endpoint>
</service>
</services>
<bindings>
<customBinding>
<binding name="custBind">
<security authenticationMode="UserNameOverTransport"></security>
<httpsTransport></httpsTransport>
</binding>
</customBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="ServBehave">
<serviceMetadata httpsGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceCredentials>
<userNameAuthentication
userNamePasswordValidationMode="MembershipProvider"
membershipProviderName="MySqlMembershipProvider"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
客户端配置:
<configuration>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="CustomBinding_IService">
<security authenticationMode="UserNameOverTransport"
includeTimestamp="true">
<secureConversationBootstrap />
</security>
<textMessageEncoding messageVersion="Default"
writeEncoding="utf-8" />
<httpsTransport maxReceivedMessageSize="2147483647"
maxBufferSize="2147483647" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint
address="https://samsung/WCF40_SSL_Service/Service.svc"
binding="customBinding" bindingConfiguration="CustomBinding_IService"
contract="MyRef.IService" name="CustomBinding_IService" />
</client>
</system.serviceModel>
</configuration>
答案 0 :(得分:2)
一种可能性是它与SSL证书有关。
看起来你正在对开发机器运行https。这里可能存在的问题是:
答案 1 :(得分:0)
在浏览器中打开此网址时,您看到了什么? https://samsung/WCF40_SSL_Service/Service.svc