具有 http 和 https 绑定的 WCF Rest 服务
WCF Rest Service with both http and https bindings
我正在尝试创建一个可以同时接受 http 和 https 流量的休息服务。这样做的原因是我的公司为我们的客户提供托管和非托管解决方案。在托管解决方案中,所有流量都通过 F5,该 F5 去除 SSL 并以常规 http 将其转发到我们的服务器。
非托管解决方案让其 Web 服务器处理 SSL(因此,服务器需要 https 安全性)。
绑定最初是这样定义的:
<webHttpBinding>
<binding closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="64" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None">
</security>
</binding>
</webHttpBinding>
但是,这对我们的非托管客户不起作用。然后我把它改成了这个
<webHttpBinding>
<binding closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="64" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
</security>
</binding>
</webHttpBinding>
但是,您可以猜到,这对我们的托管客户不起作用。
是否可以让使用 .NET 4.0 框架的 WCF 休息服务同时接受 http 和 https 流量?
我试过这个:
<webHttpBinding>
<binding name="normalRestBinding" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="64" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
</security>
</binding>
<binding name="secureRestBinding" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="64" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
</security>
</binding>
</webHttpBinding>
使用此服务定义:
<service name="theService" behaviorConfiguration="RestServiceBehavior">
<endpoint name="normalRestEndpoint" address="" behaviorConfiguration="RestEndpoint" binding="webHttpBinding" bindingConfiguration="normalRestBinding" contract="theContract">
<identity>
<dns />
</identity>
</endpoint>
<endpoint name="secureRestEndpoint" address="" behaviorConfiguration="RestEndpoint" binding="webHttpBinding" bindingConfiguration="secureRestBinding" contract="theContract">
<identity>
<dns />
</identity>
</endpoint>
</service>
使用这些,我现在在尝试通过常规 http:
访问端点时遇到此错误
找不到与具有绑定 WebHttpBinding 的端点的方案 https 相匹配的基地址。注册基址方案为 [http].
如有任何帮助,我们将不胜感激。
谢谢!
能够解决这个问题。
我放在问题底部的代码很好。
为了解决该错误消息,我必须确保我尝试使用此 Web 配置的服务器上的 IIS 中存在 https 绑定。
很抱歉自行回答,但我不想让这个开放,有人浪费他们的时间试图为我回答!
谢谢!
我正在尝试创建一个可以同时接受 http 和 https 流量的休息服务。这样做的原因是我的公司为我们的客户提供托管和非托管解决方案。在托管解决方案中,所有流量都通过 F5,该 F5 去除 SSL 并以常规 http 将其转发到我们的服务器。
非托管解决方案让其 Web 服务器处理 SSL(因此,服务器需要 https 安全性)。
绑定最初是这样定义的:
<webHttpBinding>
<binding closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="64" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None">
</security>
</binding>
</webHttpBinding>
但是,这对我们的非托管客户不起作用。然后我把它改成了这个
<webHttpBinding>
<binding closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="64" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
</security>
</binding>
</webHttpBinding>
但是,您可以猜到,这对我们的托管客户不起作用。
是否可以让使用 .NET 4.0 框架的 WCF 休息服务同时接受 http 和 https 流量?
我试过这个:
<webHttpBinding>
<binding name="normalRestBinding" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="64" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
</security>
</binding>
<binding name="secureRestBinding" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="64" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
</security>
</binding>
</webHttpBinding>
使用此服务定义:
<service name="theService" behaviorConfiguration="RestServiceBehavior">
<endpoint name="normalRestEndpoint" address="" behaviorConfiguration="RestEndpoint" binding="webHttpBinding" bindingConfiguration="normalRestBinding" contract="theContract">
<identity>
<dns />
</identity>
</endpoint>
<endpoint name="secureRestEndpoint" address="" behaviorConfiguration="RestEndpoint" binding="webHttpBinding" bindingConfiguration="secureRestBinding" contract="theContract">
<identity>
<dns />
</identity>
</endpoint>
</service>
使用这些,我现在在尝试通过常规 http:
访问端点时遇到此错误找不到与具有绑定 WebHttpBinding 的端点的方案 https 相匹配的基地址。注册基址方案为 [http].
如有任何帮助,我们将不胜感激。
谢谢!
能够解决这个问题。
我放在问题底部的代码很好。
为了解决该错误消息,我必须确保我尝试使用此 Web 配置的服务器上的 IIS 中存在 https 绑定。
很抱歉自行回答,但我不想让这个开放,有人浪费他们的时间试图为我回答!
谢谢!