Şu anda WCF RESTful hizmetimi .NET 3.5 (Başlangıç Seti) .NET 4'e taşıyorum. Projemi Visual WCF Rest hizmeti şablonunu kullanarak başlattım Studio 2010. ServiceAuthorizationManager'ı kullanarak yetkilendirme planımı nasıl tutacağımı (RequestInterceptor ile yapılmış) anlamam gerekiyordu. Bazı çalışmalardan ve araştırmalardan sonra yaptım. Ama şimdi bir teminat problemim var. Hizmetim, HTTP durum kodunu ve kısa bir açıklamayı kullanarak istemcimi herhangi bir işlem hatasıyla geri bildirim olarak kullandı. Böyle, neyin yanlış gittiğini müşterilerine açıklamak için benim hizmet yönteminin birçok noktada WebOperationContext kullanıyordu: WCF 4 REST hizmeti bir StatusDescription döndüremiyor, yalnızca StatusCode
protected void returnCode(HttpStatusCode code, string description)
{
WebOperationContext ctx = WebOperationContext.Current;
ctx.OutgoingResponse.StatusDescription = description;
ctx.OutgoingResponse.StatusCode = code;
}
Ama WCF 4
, çalışan tek StatusCode - DurumuAçıklama sessizce başarısız olur. Nedenini anlayamıyorum. Tek tahminim, WebOperationContext'in bu yeni WCF 4 senaryosunda çalışmadığı ve bunun yerine OperationContext kullanmalıyım, ancak bu da işe yaramıyor.private void GenerateBadDigestMessage(ref OperationContext operationContext)
{
Message reply = Message.CreateMessage(MessageVersion.None, null, null, new DataContractJsonSerializer(typeof(object)));
HttpResponseMessageProperty hrp = new HttpResponseMessageProperty();
hrp.StatusCode = HttpStatusCode.Forbidden;
hrp.StatusDescription = "bad digest";
reply.Properties[HttpResponseMessageProperty.Name] = hrp;
operationContext.RequestContext.Reply(reply);
operationContext.RequestContext = null;
}
bile direclty burada (WebOperationContext ait Insted) OperationContext kullanarak, DurumuAçıklama yapmaz: Aşağıdaki yöntem benim özel sınıf auth özeti hatalı oluşturulmuş çünkü bir istek erişim olamazdı müşterilerine bildiren, ServiceAuthorizationManager uzanan kullanılır iş.
Neler eksik? Neden küçük bir şey .NET 3.5'ten 4'e kadar kırılabilir?
Kendinden barındırılan veya IIS? Hangi sunucu sürümü? Bunu kendi kendine barındırılan Server 2008R2 ile 4.0'da test ettim ve iyi çalışıyor (Durum Açıklaması ayarlandı). – nitzmahone
Hiç bir çözüm buldunuz mu? Ben de aynı problemle karşı karşıyayım. – Hemant