ile sonuçlanmıyor Bu saçlarımı yırtıyorum, tarayıcımda arayabileceğimiz bir WCF hizmetim var ve web uygulamasından aradığımda gayet iyi çalışıyor. Aşağıdaki yöntemde bir (401) Yetkisiz hatası alıyorum. Ve servis çağırılmaz. Dahası, web uygulamamı yerel makinemden çalıştırdığımda (IIS Express kullanarak hata ayıklama modu) dev sunucuma (IIS7) işaret ettim, ancak web uygulamamı dev sunucusuna dağıttığımda ve bunu sunucuya yönlendirdiğimde 401 hatası ile başarısız olur. Ben bu IIS7 ile ilgili bir şey olduğunu düşünüyorum ama% 100 emin değilim ve yardım çok yararlı olacaktır.Kimlik bilgilerini WCF Hizmetine aktarma 401
Yanıtları çevrimiçi olarak inceledim, ancak şu ana kadar bulabildiğim en iyi şey this. aşağıdaki gibi
hizmetim çağrısıdır:
var request = (HttpWebRequest) WebRequest.Create(url);
request.Method = "GET";
request.ContentType = "application/json; charset=utf-8";
request.AuthenticationLevel = AuthenticationLevel.MutualAuthRequested;
request.Credentials = CredentialCache.DefaultCredentials;
WebResponse responce = request.GetResponse();
Stream reader = responce.GetResponseStream();
var sReader = new StreamReader(reader);
string outResult = sReader.ReadToEnd();
sReader.Close();
var result = (T) JsonConvert.DeserializeObject(outResult, typeof (T));
return result;
hizmet için My yapılandırma şuna benzer: hemen önce, ben müşteri hizmetleri çağrı üzerine bazı günlük koyduk
<service name="RGMPServices.Householding.Services.AccountService" behaviorConfiguration="Default">
<endpoint address="" kind="webHttpEndpoint" endpointConfiguration="SecuredHttpEndpointBinding" contract="RGMPServices.Householding.Contracts.IAccountService" />
</service>
<service name="RGMPServices.Householding.Services.HouseholdService" behaviorConfiguration="Default">
<endpoint address="" kind="webHttpEndpoint" endpointConfiguration="SecuredHttpEndpointBinding" contract="RGMPServices.Householding.Contracts.IHouseholdService" />
</service>
<service name="RGMPServices.Householding.Services.UserService" behaviorConfiguration="Default">
<endpoint address="" kind="webHttpEndpoint" endpointConfiguration="SecuredHttpEndpointBinding" contract="RGMPServices.Householding.Contracts.IUserService" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webBehaviour">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="SecuredHttpEndpointBinding" helpEnabled="true" automaticFormatSelectionEnabled="true">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</standardEndpoint>
</webHttpEndpoint>
</standardEndpoints>
Hizmetini arıyorum, yanıt:
o tarayıcı için çalışıyor: Ben hâlâ tekrar ama, WCF hizmeti erişmek için bana yetki değildir Alan hesabıma web sitesi için AppPool'u belirlenmiş olsa dahiDEBUG 2013-10-01 13:15:13,569 452ms ServiceGetSingle - Passing Login: MYLANDOMAIN\MYLANUSERNAME
ERROR 2013-10-01 13:15:13,631 514ms ServiceGetSingle - ERROR Calling ServiceGetSingle with user credentials login: MYLANDOMAIN\MYLANUSERNAME System.Net.WebException: The remote server returned an error: (401) Unauthorized. at System.Net.HttpWebRequest.GetResponse() at Householding.Common.ServiceHelper.ServiceGetSingle[T](String url)
logger.Debug("Passing Login: "
+ System.Security.Principal.WindowsIdentity.GetCurrent().Name)
: gibi
kod görünüyor . Çok garip!
WCF ve windows kimlik doğrulaması çalışmasının yapılması her zaman kolay değildir. Http akışını izlemek için istemcide Fiddler'ı deneyin. Ayrıca, sunucuda WCF izlemeyi yapılandırmayı deneyin: http://msdn.microsoft.com/en-us/library/ms733025.aspx – Joe