在 HTTPS 中可以 Ajax 调用 WCF 服务
Can Ajax call WCF service when in HTTPS
我在 Web 应用程序中托管了一个 wcf 服务,当我们尝试使用 http 访问该服务时它工作正常,但是当我们在 https 下访问它时它给出 404 not found,我如何在 https 下启用 WCF 服务允许 ajax 接听电话?如果那是问题...
配置如下:
<webHttpBinding>
<binding name="secure" maxBufferSize="655360" maxBufferPoolSize="5242880" maxReceivedMessageSize="655360">
<readerQuotas maxDepth="32" maxStringContentLength="655360" maxArrayLength="655360" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="None"/>
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="CampWareMobileServices.HousekeepingMobileService" behaviorConfiguration="ServiceBehavior">
<clear/>
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="webBehavior" contract="CampWareMobileServices.IHousekeepingMobileService" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
您需要有 2 个不同的 endpoint
和 binding
,如下所示。我已经在这里回答了类似的问题 -
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<bindings>
<webHttpBinding>
<binding name="Binding" crossDomainScriptAccessEnabled="true">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
<binding name="httpbind" crossDomainScriptAccessEnabled="true">
</binding>
</webHttpBinding>
</bindings>
<client />
<services>
<service name="RestService.service" behaviorConfiguration="ServiceBehaviour">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="Binding" contract="RestService.Iservice" behaviorConfiguration="web">
</endpoint>
<endpoint address="" binding="webHttpBinding" bindingConfiguration="httpbind" contract="RestService.Iservice" behaviorConfiguration="web">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="web">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp helpEnabled="true" />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
我在 Web 应用程序中托管了一个 wcf 服务,当我们尝试使用 http 访问该服务时它工作正常,但是当我们在 https 下访问它时它给出 404 not found,我如何在 https 下启用 WCF 服务允许 ajax 接听电话?如果那是问题...
配置如下:
<webHttpBinding>
<binding name="secure" maxBufferSize="655360" maxBufferPoolSize="5242880" maxReceivedMessageSize="655360">
<readerQuotas maxDepth="32" maxStringContentLength="655360" maxArrayLength="655360" maxBytesPerRead="4096" maxNameTableCharCount="16384"/>
<security mode="None"/>
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="CampWareMobileServices.HousekeepingMobileService" behaviorConfiguration="ServiceBehavior">
<clear/>
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="webBehavior" contract="CampWareMobileServices.IHousekeepingMobileService" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="True" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
您需要有 2 个不同的 endpoint
和 binding
,如下所示。我已经在这里回答了类似的问题 -
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<bindings>
<webHttpBinding>
<binding name="Binding" crossDomainScriptAccessEnabled="true">
<security mode="Transport">
<transport clientCredentialType="None" />
</security>
</binding>
<binding name="httpbind" crossDomainScriptAccessEnabled="true">
</binding>
</webHttpBinding>
</bindings>
<client />
<services>
<service name="RestService.service" behaviorConfiguration="ServiceBehaviour">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="Binding" contract="RestService.Iservice" behaviorConfiguration="web">
</endpoint>
<endpoint address="" binding="webHttpBinding" bindingConfiguration="httpbind" contract="RestService.Iservice" behaviorConfiguration="web">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehaviour">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
<behavior name="web">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp helpEnabled="true" />
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>