标签: httpcontext

寻求一个尺寸适合所有基于上下文的存储

首先,我希望基于上下文的存储在整个框架中保持一致!

话虽如此,我正在寻找一种优雅的解决方案,使这些属性在ASP.NET,WCF和任何其他多线程.NET代码中都是安全的.这些属性位于一些低级跟踪帮助程序中(如果您想知道它们为什么是内部的,则通过方法公开).

我宁愿不依赖于不需要的程序集(如System.Web等).我不想要求使用此代码的任何人配置任何东西.我只是想让它起作用;)虽然这可能太高了一个订单......

任何人都有任何诡计?(我看过Spring的实现)

    internal static string CurrentInstance
    {
        get
        {
            return CallContext.LogicalGetData(currentInstanceSlotName) as string;
        }
        set
        {
            CallContext.LogicalSetData(currentInstanceSlotName, value);
        }
    }

    internal static Stack<ActivityState> AmbientActivityId
    {
        get
        {
            Stack<ActivityState> stack = CallContext.LogicalGetData(ambientActivityStateSlotName) as Stack<ActivityState>;
            if (stack == null)
            {
                stack = new Stack<ActivityState>();
                CallContext.LogicalSetData(ambientActivityStateSlotName, stack);
            }

            return stack;
        }
    }
Run Code Online (Sandbox Code Playgroud)

更新

安全我不是说同步.背景在这个问题上这里

.net c# thread-static httpcontext

5
推荐指数
1
解决办法
567
查看次数

Web.HttpContext.Current.User.Identity.Name来自哪里?

我有

FormsAuthentication.SetAuthCookie("someName", True)
Run Code Online (Sandbox Code Playgroud)

作为我的自定义登录序列的一部分.后来,我有一些页面只允许一个特定的角色:

<location path="myPage.aspx">
    <system.web>
        <authorization>
            <allow roles="SomeRole"/>
            <deny users="*"/>
        </authorization>
    </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)

据我所知,这会调用我的角色提供程序的GetRolesForUser实现.它似乎从Web.HttpContext.Current.User.Identity.Name获取用户名参数.

我的问题是...... 来自auth cookie的用户名何时被设置为我当前用户身份中的名称?

asp.net forms-authentication httpcontext roleprovider

5
推荐指数
1
解决办法
9563
查看次数

异步HttpWebRequests和null HttpContext.Current.Response/Request对象

我有一个很大程度上依赖于Web服务的Web应用程序.服务的所有内容都是异步完成的,并使用AddOnPreRequestHandlerExecuteAsync.无论如何,我的大多数调用都运行得很好,但是有些调用从异步服务调用返回,在endprerequest中找到一个空的HttpContext.Current.Response/Request对象,当然我试图使用这个错误.两个对象(响应和请求在初始请求失败的调用时可用/非空,并且在其他调用的最终请求中工作).

任何人遇到类似的问题,或猜测可能是什么问题?

更新:似乎找到了一个解决方案,如果我在Init上创建一个HttpApplication的变量(HttpModule的这一切都发生在那里),可以从该变量访问HttpContext.

更新:在begin函数上传递HttpApplication或HttpContext.Current具有相同的问题.当作为异步调用的"状态"的一部分传递时,它们在end函数中最终为null,即使它们在begin函数中有效.

更新:我添加了一些日志记录,发现我正在进行的异步调用正确返回,结果存在,回调函数被正确调用.

null asynchronous response httpwebrequest httpcontext

5
推荐指数
2
解决办法
3172
查看次数

用于非HTTP协议应用程序的Elmah或没有HttpContext的Elmah

我们正在开发一个3层应用程序,我们已被允许使用最新和最好的(MVC2,IIS7.5,WCF,SQL2k8等).WCF服务将应用程序层公开给各种Web应用程序.由于我们控制服务和客户端,因此我们决定使用net.tcp绑定来提高其在HTTP上的性能优势.

我们希望使用ELMAH进行错误记录,包括Web应用程序和服务.这是我的问题.有很多关于将ELMAH与WCF一起使用的信息,但它都适用于HTTP绑定.有谁知道是否/如何使用ELMAH与WCF服务暴露非HTTP端点?

我的猜测是否定的,因为ELMAH需要HttpContext,它需要在web.config 中将AspNetCompatibilityEnabled标志设为true.来自MSDN:

IIS 7.0和WAS允许WCF服务通过HTTP以外的协议进行通信.但是,不允许在启用ASP.NET兼容模式的应用程序中运行的WCF服务公开非HTTP端点.当服务接收到其第一条消息时,这种配置会生成激活异常.

如果您不能将ELMAH与具有非HTTP端点的WCF服务一起使用,那么后续问题是:我们能否以不需要HttpContext的方式使用ELMAH?或者更一般地说(为了不提交细金属标尺错误),有没有办法将ELMAH与具有非HTTP端点的WCF服务一起使用?

注意:我知道我们可以下载Elmah源代码并将其更改为添加填充程序或删除HttpContext依赖项,但我正在尝试避免分叉代码.

wcf elmah was httpcontext net.tcp

5
推荐指数
1
解决办法
1555
查看次数

在C#MVC项目中添加虚假httpContext的会话

如何将会话添加到fakeContext?

我们为部分请求构建此函数,其中内容必须作为字符串返回.只有我们现在在部分请求中没有会话.

我不能像fakeContext.Session = HttpContext.Current.Session那样添加它们

有人建议吗?

    ///<summary>
    /// Invoke the partial request and return the result as a string.
    ///</summary>
    ///<param name="context">The controller context to use.</param>
    ///<returns>A string containing the result of the partial request.</returns>
    public String InvokeAsString(ControllerContext context)
    {
        var stringBuilder = new StringBuilder();
        //create memory writer used for httpresponse.
        var memoryWriter = new StringWriter(stringBuilder);
        //create a fake response
        var fakeResponse = new HttpResponse(memoryWriter);
        //create a fake context.
        var fakeContext = new HttpContext(HttpContext.Current.Request, fakeResponse);
        var oldPrincipal = context.HttpContext.User;
        fakeContext.User …
Run Code Online (Sandbox Code Playgroud)

c# model-view-controller session renderpartial httpcontext

5
推荐指数
1
解决办法
2460
查看次数

对HttpContext.Current.Session的静态引用是否为所有用户返回相同的会话?

对于同一Web应用程序的多个用户,是否存在以下代码中的问题?我的意思是,我知道一个纯静态字符串将在单个ASP.NET应用程序的所有会话中共享,但鉴于它明确引用了Current.Session,即使它是静态的,它似乎总是引用会话实例"当前用户".

但是一个错误正在发生,可以通过共享当前值的每个人来解释Mode,因此最近的更改会覆盖其他人的模式值.

(作为背景:此字符串位于Helpers整个应用程序中使用的类中.我不想对Session["Mode"]整个应用程序进行硬编码引用,也不希望Session["Mode"]从aspx.cs页面传递每个方法调用.)

public static string Mode
{
    get
    {
        var value = HttpContext.Current.Session["Mode"];
        return (value ?? string.Empty).ToString();
    }
    set
    {
        HttpContext.Current.Session["Mode"] = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net session static httpcontext

5
推荐指数
1
解决办法
4348
查看次数

如何初始化自定义HTTP上下文或HttpContextBase

我正在尝试创建自己的自定义HTTP上下文:

CustomHttpContext : HttpContextBase
{
    public override HttpRequestBase Request { }
}
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚的一件事是如何初始化基类

System.Web.HttpContext.Current
Run Code Online (Sandbox Code Playgroud)

有没有人有任何想法我如何首先使用Current Http初始化自定义上下文然后覆盖某些方法/属性以满足我自己的目的?

c# asp.net httpcontext

5
推荐指数
1
解决办法
1万
查看次数

如何模拟httpcontext以使它不是单元测试中的null?

我正在编写单元测试,并且控制器方法抛出异常,因为HttpContext/ControllerContext为null.我不需要从HttpContext断言任何东西,只需要它不是NULL.我做过研究,我相信Moq就是答案.但是我见过的所有样本都没有给我很多帮助.我不需要做任何花哨的事情,只是为了模拟httpcontext.指出我正确的方向!

unit-testing moq mocking httpcontext asp.net-mvc-3

5
推荐指数
1
解决办法
4109
查看次数

在.NET 4.5中等待完成后,HttpContext.Current为null

我在.NET 4.5 Web应用程序中定义了以下简单的WCF服务:

[ServiceContract]
public interface IService1
{
    [OperationContract]
    [WebGet(UriTemplate = "json/DoWork/", ResponseFormat = WebMessageFormat.Json)]
    Task<string> DoWork();
}

public class Service1 : IService1
{
    public async Task<string> DoWork()
    {
        Debug.WriteLine(HttpContext.Current != null);
        var s = await new HttpClient().GetStringAsync("http://www.google.com");
        Debug.WriteLine(HttpContext.Current != null);
        return s;
    }
}
Run Code Online (Sandbox Code Playgroud)

而web.config是:

<configuration>
  <system.web>
    <compilation debug="true"
                 targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>

  <system.serviceModel>
    <services>
      <service name="WebApplication1.Service1">
        <endpoint address=""
                  binding="webHttpBinding"
                  contract="WebApplication1.IService1"/>
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="">
          <webHttp />
        </behavior>
      </endpointBehaviors>

      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true"
                           httpsGetEnabled="true" …
Run Code Online (Sandbox Code Playgroud)

asp.net wcf httpcontext async-await

5
推荐指数
0
解决办法
683
查看次数

如何访问AspnetCore 1.0中的ServerVariables

在现有的.Net网站中,可以使用服务器变量访问

HttpContext.Current.Request.ServerVariables["HTTP_ACCEPT_LANGUAGE"]
Run Code Online (Sandbox Code Playgroud)

如何访问AspnetCore 1.0 Web应用程序中的ServerVariables?
在控制器内部调试时,this.HttpContext.Features不包含IServerVariablesFeature.

server-variables httpcontext request.servervariables asp.net-core

5
推荐指数
1
解决办法
7675
查看次数