मैं एक डब्ल्यूसीएफ सेवा लिख रहा हूं प्रतिरूपण और सत्र की आवश्यकता है।
netTCP बाध्यकारी साबुन सुरक्षा बातचीत विफल
यह ठीक है जब मैं अपने स्थानीय मशीन पर यह कॉल करने की कोशिश, लेकिन रिमोट मशीन पर यह हमेशा इस तरह के त्रुटि के साथ विफल:
Security Support Provider Interface (SSPI) authentication failed. The server may not be running in an account with identity 'host/hostname'. If the server is running in a service account (Network Service for example), specify the account's ServicePrincipalName as the identity in the EndpointAddress for the server. If the server is running in a user account, specify the account's UserPrincipalName as the identity in the EndpointAddress for the server.
अगर मैं एक UPN प्रदान की है, फेंक देता है एक पहचान अपवाद में विफल रहा है ।
सर्वर कॉन्फ़िग (एपीपी):
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="default">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceAuthorization impersonateCallerForAllOperations="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<netTcpBinding>
<binding name="DataService.netTcpBinding">
<readerQuotas maxArrayLength="65535" maxBytesPerRead="2147483647" maxStringContentLength="2147483647"/>
<reliableSession enabled="true" inactivityTimeout="24:00:00" ordered="true"/>
<security mode="TransportWithMessageCredential">
<message clientCredentialType="Windows" />
<transport clientCredentialType="Windows"/>
</security>
</binding>
</netTcpBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
<services>
<service behaviorConfiguration="default" name="DataService.DataService">
<endpoint address="" binding="netTcpBinding" bindingConfiguration="DataService.netTcpBinding"
name="DataService.DataService" contract="DataService.IDataService"/>
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://address:4504/"/>
<add baseAddress="net.tcp://address:4503/"/>
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
ग्राहक कॉन्फ़िग:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="DataService.DataService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10"
maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
maxReceivedMessageSize="65536">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="24.00:00:00"
enabled="true" />
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows" algorithmSuite="Default" />
</security>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://address:4503/" binding="netTcpBinding"
bindingConfiguration="DataService.DataService"
contract="ataService.IDataService" name="DataService.DataService">
<identity>
<dns value="DOMAIN"/>
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
किसी भी मदद की बहुत सराहना की जाएगी
यहाँ मेरी config है।
यह सही है। मैं यह भी जोड़ूंगा कि आईआईएस द्वारा होस्ट की जाने वाली वेब सेवाओं का उपभोग करते समय, पहचान उस ऐप पूल पहचान से मेल खाना चाहिए जो सेवा के अंतर्गत रहती है। यह नेटवर्क सेवा से आईआईएस (शायद 7?) के कुछ संस्करण में बदल दिया गया था (जहां आप 'नेटवर्क सेवा @ मशीन-NAME' के उपयोगकर्ता सिद्धांत का उपयोग ऐपपूल इडेंटिटी) में करेंगे (जहां आप' मेजबान/मशीन-NAME 'के सेवा सिद्धांत का उपयोग करेंगे)। – qJake