共有環境でホストされているWCFサービスを取得しました(Webホスティング会社からスペースを借りていますが、専用のアプリケーションプールがあります) .net wcfサービスを呼び出すWebアプリケーション。どちらのプロジェクトも.NET 4プロジェクトです。認証が失敗したためにセキュリティトークンの要求を満たすことができません
VS2010からWebアプリケーションを実行すると、簡単にwcf呼び出しを行うことができます。しかし、私はその共有環境でウェブサイトを公開し、そこからwcf呼び出しを行うと例外が発生します。
例外の詳細:
[FaultException:認証が失敗したため、セキュリティトークンの要求を満たすことができなかった。】 System.ServiceModel.Security.SecurityUtils.ThrowIfNegotiationFault(メッセージメッセージ、EndpointAddress対象)5499790 システム。 ServiceModel.Security.SspiNegotiationTokenProvider.GetNextOutgoingMessageBody(メッセージincomingMessage、SspiNegotiationTokenProviderState sspiState)+49
[SecurityNegotiationException:発呼者がサービスによって認証されなかった。] System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessa GE(IMessageがreqMsg、IMessageがretMsg)9464367 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(のMessageData & msgData、のInt32型)345
私もそれはあまりにも動作しますが、私のローカルマシン上でWebサイトを公開します。ここで
は、サーバー側で私の設定です:<wsHttpBinding>
<binding name="wsHttpBinding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
transactionFlow="false"
hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647">
<readerQuotas maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</wsHttpBinding>
クライアント側コード:
factory.Credentials.Windows.Username = "user";
factory.Credentials.Windows.Password = "psw";
factory = new ChannelFactory<IService>(binding, serviceAddress);
factory.Open();
service = factory.CreateChannel();
私が代わりにbasicHttpBindingのwsHttpBindingを使用したい、と私はいくつかのセキュリティが必要ですので、私はいけませんセキュリティモードを[なし]に設定します。
IISバージョンはWindows 2008 R2では7であり、匿名認証を許可するように設定されています。 Asp.net偽装は無効です。
VS2010からウェブサイトプロジェクトを実行すると動作しないため、これらの設定に何か問題があるとは思われません。
ありがとうございました。
Xiaosu
urセキュリティモードとは何ですか? – Aliostad
両側のセキュリティモード: <トランスポートclientCredentialType = "Windows" proxyCredentialType = "None" realm = "" /> –
Xiaosu