我有一个WCF服务:
https://myservice/service.svc
https://myservice/service.svc?wsdl
以下是我的WCF应用程序的web.config的相关部分(如果您需要更多,请告诉我):
<bindings>
<basicHttpBinding>
<binding name="basicHttp">
<security mode="TransportWithMessageCredential">
<message clientCredentialType="UserName"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="MyService.ServiceBehavior">
<serviceMetadata httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
<serviceCredentials>
<userNameAuthentication userNamePasswordValidationMode="MembershipProvider" membershipProviderName="SqlMembershipProvider"/>
</serviceCredentials>
<serviceThrottling maxConcurrentCalls="100" maxConcurrentInstances="100" maxConcurrentSessions="100"></serviceThrottling>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="MyService.ServiceBehavior" name="MyService.Service">
<endpoint address="/ClientA" binding="basicHttpBinding" bindingConfiguration="basicHttp" name="basicHttpEndpoint" contract="MyService.IService"></endpoint>
<endpoint address="/ClientB" binding="basicHttpBinding" bindingConfiguration="basicHttp" name="basicHttpEndpoint" contract="MyService.IService"></endpoint>
<endpoint address="/ClientC" binding="basicHttpBinding" bindingConfiguration="basicHttp" name="basicHttpEndpoint" contract="MyService.IService"></endpoint>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
</service>
</services>
我希望我的客户能够通过以下链接访问该服务,但链接不起作用:(或者我的语法可能对下面的链接有误,如果是这样,请告诉我)
https://myservice/service.svc/ClientA
https://myservice/service.svc/ClientB
https://myservice/service.svc/ClientC
以下链接有效,但我不认为这是由于我的配置,好像我在最后一次正斜线后写了任何东西它仍然可以工作....
https://myservice/service.svc?wsdl/ClientA
https://myservice/service.svc?wsdl/ClientB
https://myservice/service.svc?wsdl/ClientC
https://myservice/service.svc?wsdl/asfgvafgfgf ... (this works too !!!)
请告诉我如何实现这一目标。我不想为所有客户创建单独的服务。
如果这样做,我想在所有客户端的端点定义中使用不同的contract =“MyService.IService”,因为服务中公开的每个客户端的方法会有所不同。
我还想问一下,我是否可以指定要使用哪个连接字符串,具体取决于哪个端点客户端正在访问该服务?
最后:我不想要:
https://myservice/service.svc
https://myservice/service.svc?wsdl
要访问的链接,我希望客户端只使用他们指定的链接......
是可能的,或者我应该为每个客户创建单独的服务......?
感谢。
答案 0 :(得分:0)
我认为它需要在配置文件中进行一些设置。
请参阅此链接
http://keyvan.io/host-wcf-service-and-asp-net-application-on-same-virtual-directory
这可能对你有帮助。