HttpContext.Current.Request.ServerVariables [ “SERVER_PORT”] HttpContext.Current.Request.ServerVariables [ “SERVER_PORT_SECURE”] HttpContext.Current.Request.ServerVariables [ “SERVER_NAME”] HttpContext.Current.Request.ApplicationPath
我希望通过webservice -C#访问这些值,每当我在webservice中调用这些值时,我对以上所有内容都是null,如上所述适用于网页(aspx)。
答案 0 :(得分:3)
正如其他人所提到的,您需要启用ASP.NET兼容性。如果您不想通过以下属性限制代码,也可以通过配置启用此功能:
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
Here's a great resource帮助向我解释了启用兼容模式所带来的基本功能和权衡。
答案 1 :(得分:2)
您使用的是哪种网络服务? asmx还是wcf?它们应该可以与asmx服务一起使用,但如果您使用的是WCF,则需要在方法中添加以下属性:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
答案 2 :(得分:1)
如果是WCF Web服务,您可以执行以下操作:
[AspNetCompatibilityRequirementsAttribute(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class FooBar : IFooBar
{
public void DoSomething()
{
HttpContext context = HttpContext.Current;
if (context != null)
{
// Should get here now
}
}
}
关键是添加[AspNetCompatibilityRequirementsAttribute(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
。
答案 3 :(得分:1)
您是否尝试使用EnableSession定义您的方法为真?
[WebMethod(EnableSession = true)]
public string your_public_method(your_params)
{ [...] }