我有一个在IIS中运行的WCF服务,它调用httpContext可用的类库中的函数.如何动态获取网站网址,这也可能是虚拟目录?
Aja*_*axx 25
我将首先假设您正在使用HTTP - 我确信您可以根据具体情况决定调整方法.我试图使用HttpContext得到一个答案,并发现在Cassini下运行时该值为null所以我尝试了另一种方法.
System.ServiceModel.OperationContext包含正确的请求上下文.您可以按照请求关注实际请求消息并清除标头.
Uri requestUri = System.ServiceModel.OperationContext.Current.RequestContext.RequestMessage.Headers.To;
Run Code Online (Sandbox Code Playgroud)
您可以创建一个 ServiceHostFactory 来手动启动服务主机,然后将端点地址存储在静态类中以供应用程序使用。这是一个简单的例子:
(在你的 myService.svc 中):
<%
@ServiceHost
Service="MyNamespace.MyService"
Factory="MyNamespace.MyServiceHostFactory"
%>
Run Code Online (Sandbox Code Playgroud)
(在您的 MyServiceHostFactory.cs 中):
/// <summary>
/// Extends ServiceHostFactory to allow ServiceHostFactory to be used.
/// </summary>
public class MyServiceHostFactory : ServiceHostFactory
{
/// <summary>
/// Creates a new ServiceHost using the specified service and base addresses.
/// </summary>
/// <param name="serviceType"></param>
/// <param name="baseAddresses"></param>
/// <returns></returns>
protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
ServiceHost host;
host = new ServiceHost(serviceType, baseAddresses);
MyGlobalStaticClass.Address = baseAddresses[0]; // assuming you want the first endpoint address.
return host;
}
Run Code Online (Sandbox Code Playgroud)
(在您的 MyGlobalStaticClass.cs 中):
public static string Address = "";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23928 次 |
| 最近记录: |