Когда я пытаюсь использовать WebOperationContext.Current в проекте WCF, Current является нулевым.Ниже приведен пример.Кто-нибудь может пролить свет на это?
WebForm - default.aspx:
ServiceClient sc = new ServiceClient();
Response.Write(sc.DoWork(1) + "<br />");
WebOperationContext c = WebOperationContext.Current; --Current is null
// Интерфейс WCF
[ServiceContract]
public interface IService
{
[OperationContract]
[WebGet]
int DoWork(int num);
}
// Реализация WCF
public class Service : IService
{
public int DoWork(int num)
{
return num;
}
}
Системные настройки: ASP.NET 3.5
Заранее спасибо.
Описание моего вопроса изменено ниже:
КогдаЯ пытаюсь использовать WebOperationContext.Current в проекте WCF, Текущий является нулевым.Ниже приведен пример.Может ли кто-нибудь пролить свет на это?
Что мне нужно - это прозрачный способ (или способ, который мало меняется в существующем коде), чтобы заставить существующий код выполнить указаннуюработа на основе токена.Вот почему здесь используется HttpModule, покажите ниже:
// HttpModule: вставьте токен, на котором может основываться работа в пипнелине.Как уже упоминалось, HttpModule используется для внесения минимальных изменений в существующий код.
public class ImageIntercept : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
void context_BeginRequest(object sender, EventArgs e)
{
WebOperationContext.Current.IncomingRequest.Headers.Add("image", "true"); //a token on which works will be based
}
public void Dispose()
{ }
}
//WCF Interface
[ServiceContract]
public interface IService
{
[OperationContract]
[WebGet]
int DoWork(int num);
}
//WCF Implementation
public class Service : IService
{
public int DoWork(int num)
{
string isImage = WebOperationContext.Current.IncomingRequest.Headers["image"];
if(isImage == "true")
{
//this is what I need to do something here
}
return num;
}
}
Системные настройки: ASP.NET 3.5
Заранее спасибо.