Web アプリケーションで自己ホスト型 (プログラムでホストされている) WCF サービスを使用しています。[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
属性を SampleService クラスに配置し、要素をセクション<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="false"/>
の Web.config に配置しました。system.serviceModel
次のコードを使用して、Application_Start メソッドの Global.asax で WCF サービスをホストしています。
protected void Application_Start(object sender, EventArgs e)
{
var serviceType = typeof (SampleService);
var serviceInterfaceType = typeof(ISampleService);
var baseAddresses = new Uri(@"https://localhost:443/SilverWIF.WEB/SampleService");
var serviceHost = new ServiceHost(serviceType, baseAddresses);
var smb = serviceHost.Description.Behaviors.Find<ServiceMetadataBehavior>();
if (smb == null)
{
smb = new ServiceMetadataBehavior { HttpsGetEnabled = true };
serviceHost.Description.Behaviors.Add(smb);
}
else smb.HttpsGetEnabled = true;
var sdb = serviceHost.Description.Behaviors.Find<ServiceDebugBehavior>();
if (sdb == null)
{
sdb = new ServiceDebugBehavior { IncludeExceptionDetailInFaults = true };
serviceHost.Description.Behaviors.Add(sdb);
}
else sdb.IncludeExceptionDetailInFaults = true;
serviceHost.Description.Endpoints.Clear();
serviceHost.AddServiceEndpoint(serviceInterfaceType, _getGustomBinding(), string.Empty);
serviceHost.Open();
}
private static CustomBinding _getGustomBinding()
{
var binaryMessageEncodingBindingElement = new BinaryMessageEncodingBindingElement();
var httpsTransportBindingElement = new HttpsTransportBindingElement();
var binding = new CustomBinding(binaryMessageEncodingBindingElement, httpsTransportBindingElement);
return binding;
}
このすべてにもかかわらず、私は HttpContext.Current == null を持っています(SampleService
クラスのメソッドの1つからアクセスしようとしています)。
WCF サービスがプログラムでホストされている場合、HttpContext.Current にアクセスできますか? 誰でもこの問題で私を助けることができますか?