我在.net4上有一个MVC3应用程序,它的会话在dev环境中工作,但不在生产环境中.
在制作中我记录了sessionID,它在我设置和从会话中获取的时刻是相同的.
当我试图获得会话时,我得到了Null Exception.
这是我访问会话的方式:
public static class HandlersHttpStorage
{
public static string TestSession
{
get
{
return HttpContext.Current.Session["time"];//This is null
}
set
{
HttpContext.Current.Session.Add("time", value);//DateTime.Now.ToString()
}
}
}
Run Code Online (Sandbox Code Playgroud)
令我担心的是,即使web.config是相同的,生产中的行为也不同于开发.
与Umbraco ImageProcessor相关的问题与其他许多问题相同.我目前正在使用7.4版本,但7.3也不会裁剪图像.
我正在使用Azure Blob存储,CDN已经按照配置设置到了tee.
完整图像通过Umbraco后台上传到Azure存储,但已经尝试了各种格式化的URL请求来拉取和裁剪图像,但没有一个工作,无论是JPG还是PNG文件.根本不会发生裁剪,始终返回完整图像.
使用fiddler,我可以看到请求将转到Azure Blob以检索图像,但无论裁剪大小如何,始终返回完整的图像大小.
包裹配置...
<package id="ImageProcessor" version="2.3.1.0" targetFramework="net452" />
<package id="ImageProcessor.Web" version="4.4.1.0" targetFramework="net452" />
<package id="ImageProcessor.Web.Config" version="2.2.4.0" targetFramework="net452" />
<package id="ImageProcessor.Web.Plugins.AzureBlobCache" version="1.0.5.0" targetFramework="net452" />
<package id="UmbracoFileSystemProviders.Azure" version="0.5.0-beta" targetFramework="net452" />
Run Code Online (Sandbox Code Playgroud)
网络配置......
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
<remove name="UrlRewriteModule" />
<add name="UrlRewriteModule" type="UrlRewritingNet.Web.UrlRewriteModule, UrlRewritingNet.UrlRewriter" />
<remove name="UmbracoModule" />
<add name="UmbracoModule" type="Umbraco.Web.UmbracoModule,umbraco" />
<remove name="ImageProcessorModule" />
<add name="ImageProcessorModule" type="ImageProcessor.Web.HttpModules.ImageProcessingModule, ImageProcessor.Web" />
<remove name="ScriptModule" />
<add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的IRouteHandler类的GettHttpHandler方法中启用Session,但session始终为null.有人能告诉我我做错了什么吗?
在global.asax我有
RouteTable.Routes.Add("All", new Route("{*page}", new MyRouteHandler()));
Run Code Online (Sandbox Code Playgroud)
Session为null的MyRouteHandler类如下所示:
public class MyRouteHandler : IRouteHandler, IRequiresSessionState
{
public System.Web.IHttpHandler GetHttpHandler(RequestContext requestContext)
{
string test = HttpContext.Current.Session["test"].ToString();
return BuildManager.CreateInstanceFromVirtualPath("~/Page.aspx", typeof(Page)) as Page;
}
}
Run Code Online (Sandbox Code Playgroud)
我做了一个小测试应用程序来显示问题.
有人能告诉我我做错了什么吗?
编辑添加:
是的,我真的需要路由处理程序中的会话数据.有许多原因,但可以轻松解释的是当用户可以切换到以预览模式浏览网站时.
该站点由数据库中的动态页面层次结构(/ page1/page2 ...)组成,可以正常发布或预览.浏览网站的内容制作者可以选择仅查看普通页面或查看发布到预览的页面.浏览模式存储在用户的会话中,因此路由处理程序需要知道浏览模式才能解析所请求的页面.
所以我真的需要在那个阶段的会议.
我有一个简单的ASP.NET 3.5 SP1 Web窗体应用程序...我添加了System.Web.Routing DLL,我做了一个简单的路由,返回一个标准的ASP.NET页面作为"IHttpHandler".
一切都很好......除了HttpContext.Current.User为空 ???
所以,我做了一点挖掘(我在Global.asax文件中的所有事件中放置了断点).通常,这些断点会受到影响(当我导航到标准的".aspx"页面时):
但是,当使用ASP.NET Routing时......这些事件都没有被触发.我错过了什么吗?