javascript

java

python

c#

android

c++

node.js

php

html

jquery

ios

reactjs

css

.net

git

ruby-on-rails

sql

c

ruby

string

CodeGo.net> Elmah的:没有HttpContext的例外?

我在Application_Start上生成了一个线程,并希望记录异常。 没有ErrorSignal.FromCurrentContext().Raise(ex);,那么如何记录它?

目前,它在我的线程中没有捕获任何异常,并且如果我写ErrorSignal.FromCurrentContext().Raise(ex);,我将收到有关上下文的错误,不能为null。

也许我可以创建一个虚拟的HttpContext,但是以某种方式我认为它不会很好用。

-edit-我尝试了ErrorSignal.Get(new HttpApplication()).Raise(ex);,但似乎没有发现该异常。

trans by 2020-08-11T21:55:13Z

CodeGo.net>为什么HttpContext.Current为空?

我有在所有应用程序中使用的值; 我在application_start中设置

  void Application_Start(object sender, EventArgs e)
  {
    Dictionary<int, IList<string>> Panels = new Dictionary<int, IList<string>>();
    List<clsPanelSetting> setting = clsPanelSettingFactory.GetAll();
    foreach (clsPanelSetting panel in setting)
    {
        Panels.Add(panel.AdminId, new List<string>() { panel.Phone,panel.UserName,panel.Password});
    }
    Application["Setting"] = Panels;

    SmsSchedule we = new SmsSchedule();
    we.Run();

  }

和在SmsSchedule中

public class SmsSchedule : ISchedule
{
    public void Run()
    {           
        DateTimeOffset startTime = DateBuilder.FutureDate(2, IntervalUnit.Second);
        IJobDetail job = JobBuilder.Create<SmsJob>()
            .WithIdentity("job1")
            .Build();

        ITrigger trigger = TriggerBuilder.Create()
             .WithIdentity("trigger1")
             .StartAt(startTime)
             .WithSimpleSchedule(x => x.WithIntervalInSeconds(60).RepeatForever())
             .Build();

        ISchedulerFactory sf = new StdSchedulerFactory();
        IScheduler sc = sf.GetScheduler();
        sc.ScheduleJob(job, trigger);

        sc.Start();
    }
}

我想在一个班级得到这个值。(smsjob)

   public class SmsJob : IJob 
   {  
      public virtual void Execute(IJobExecutionContext context)
      {
          HttpContext.Current.Application["Setting"]; 
      }
   }

但是我的问题是:HttpContext.Current为null,为什么HttpContext.Current为null?

编辑:当我在页面的另一个类中使用此代码时,它可以工作,但是在此类中,我得到了错误。

trans by 2020-08-08T17:11:30Z

首页> C#> Request.UserHostAddress问题,返回结果“ :: 1”

我正在尝试使用获取客户端IP地址

    HttpContext.Request.UserHostAddress;

但返回::1

如何解决呢?

trans by 2020-02-05T07:56:20Z

http-在不使用httpcontext的情况下获取应用程序路径。 (asp.net)

怎么做?

我不想使用这个:

HttpContext.Current.Server.MapPath

是否可以在不需要httpcontext的情况下调用类似的功能?

例如,如果启动线程做某事,我不能使用httpcontext,但是我仍然需要获取应用程序的路径。 而且,我不能将上下文作为参数传递或从共享变量中读取它。

trans by 2020-02-02T11:11:53Z

ASP.NET MVC-在控制器的constru中访问HttpContext.Request

我正在关注Microsoft的此ASP.NET MVC教程:

我的代码稍有不同,我尝试在控制器的构造函数中访问HttpContext

namespace SCE.Controllers.Application
{
    public abstract class ApplicationController : Controller
    {
        public ApplicationController()
        {
            bool usuario = HttpContext.Request.IsAuthenticated;
        }           
    }
}

问题是HttpContext始终为空。

有针对这个的解决方法吗?

trans by 2020-01-10T08:36:34Z

CodeGo.net>从不同的线程访问HttpContext.Current

我有一个C#ASP.NET应用程序,它启动了大约25个不同的线程,这些线程在名为SiteCrawler.cs的类中运行某些方法。

HttpContext.Current.Session中,我想保存用户所做的搜索结果,并在所有线程完成运行后将其呈现给用户。 我的问题是,在生成的线程中HttpContext.Current对象为null,因为那里不存在该对象。

由于多线程应用程序的局限性,我还必须使用其他哪些选项来保存用户/会话特定的数据而不使用会话?

我试图搜索Stackoverflow的每一英寸以找到解决方案,但是没有任何运气。

trans by 2020-01-05T17:38:16Z

.net - 如何在线程或计时器中访问HttpServerUtility.MapPath方法?

我在我的Asp.Net应用程序中使用System.Timers.Timer,我需要使用HttpServerUtility.MapPath方法,该方法似乎只能通过HttpContext.Current.Server.MapPath获得。当Timer.Elapsed事件触发时,问题是HttpContext.Currentnull

是否有另一种方法来获取对HttpServerUtility对象的引用?我可以在我的类'构造函数中注入它。 安全吗? 如何确保在当前请求结束时不会收集垃圾?

谢谢!

trans by 2019-09-01T21:31:51Z

c# - 如何使用Moq在ASP.NET MVC中模拟HttpContext?

[TestMethod]
public void Home_Message_Display_Unknown_User_when_coockie_does_not_exist()
{
    var context = new Mock<HttpContextBase>();
    var request = new Mock<HttpRequestBase>();
    context
        .Setup(c => c.Request)
        .Returns(request.Object);
    HomeController controller = new HomeController();

    controller.HttpContext = context; //Here I am getting an error (read only).
    ...
 }

我的基本控制器有一个覆盖了这个requestContext的Initialize。 我试图通过这个,但我没有做正确的事情。

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
    base.Initialize(requestContext);
}

在哪里可以获得有关使用Moq模拟我的RequestContext和HttpContext的更多信息? 我正在尝试模拟cookie和一般上下文。

trans by 2019-08-24T12:45:14Z

如何获得wcf应用程序的工作路径?

我想获取WCF应用程序的工作文件夹。 我怎么才能得到它?

如果我试试

HttpContext.Current.Request.MapPath(HttpContext.Current.Request.ApplicationPath)

我得到一个空引用异常(Http.Current对象为null)。


我对工作文件夹的意思是我的WCF服务正在运行的文件夹。 如果我设置aspNetCompatibilityEnabled="true",我收到此错误:

服务器没有提供有意义的回复; 这可能是由于合同不匹配,过早的会话关闭或内部服务器错误造成的。

trans by 2019-06-20T19:49:47Z

如何从ASP.NET MVC 1中的HttpContextBase获取HttpContext对象?

我正在使用一些WebForms / MVC无关的工具,我需要获得HttpContext的实例,并提供对HttpContextBase对象的引用。 我不能使用HttpContext.Current因为我需要这个异步工作(HttpContext.Current在异步请求期间返回null)。 我知道HttpContextWrapper,但走错了路。

trans by 2019-05-18T21:05:08Z

c# - 在单元tes中设置HttpContext.Current.Session

我有一个Web服务,我正在尝试进行单元测试。 在服务中,它从HttpContext中提取了几个值,如下所示:

 m_password = (string)HttpContext.Current.Session["CustomerId"];
 m_userID = (string)HttpContext.Current.Session["CustomerUrl"];

在单元测试中,我使用简单的工作者请求创建上下文,如下所示:

SimpleWorkerRequest request = new SimpleWorkerRequest("", "", "", null, new StringWriter());
HttpContext context = new HttpContext(request);
HttpContext.Current = context;

但是,每当我尝试设置值HttpContext.Current.Session

HttpContext.Current.Session["CustomerId"] = "customer1";
HttpContext.Current.Session["CustomerUrl"] = "customer1Url";

我得到空引用异常,说HttpContext.Current.Session为空。

有没有办法在单元测试中初始化当前会话?

trans by 2019-04-21T10:35:54Z

c# - 在测试初始化方法中模拟HttpContext.Current

我正在尝试将单元测试添加到我构建的ASP.NET MVC应用程序中。 在我的单元测试中,我使用以下代码:

[TestMethod]
public void IndexAction_Should_Return_View() {
    var controller = new MembershipController();
    controller.SetFakeControllerContext("TestUser");

    ...
}

使用以下帮助程序来模拟控制器上下文:

public static class FakeControllerContext {
    public static HttpContextBase FakeHttpContext(string username) {
        var context = new Mock<HttpContextBase>();

        context.SetupGet(ctx => ctx.Request.IsAuthenticated).Returns(!string.IsNullOrEmpty(username));

        if (!string.IsNullOrEmpty(username))
            context.SetupGet(ctx => ctx.User.Identity).Returns(FakeIdentity.CreateIdentity(username));

        return context.Object;
    }

    public static void SetFakeControllerContext(this Controller controller, string username = null) {
        var httpContext = FakeHttpContext(username);
        var context = new ControllerContext(new RequestContext(httpContext, new RouteData()), controller);
        controller.ControllerContext = context;
    }
}

此测试类继承自具有以下内容的基类:

[TestInitialize]
public void Init() {
    ...
}

在这个方法里面它调用一个库(我无法控制),它试图运行以下代码:

HttpContext.Current.User.Identity.IsAuthenticated

现在您可以看到问题所在。 我已经针对控制器设置了假的HttpContext,但是没有在这个基本的Init方法中。 单元测试/嘲笑对我来说很新,所以我想确保我做对了。 对我来说,模拟HttpContext的正确方法是什么,以便在我的控制器和我的Init方法中调用的任何库之间共享它。

trans by 2019-04-18T18:10:50Z

1 共1页