- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在将具有内部网络服务器的应用程序从 .NET 2.0 升级到 .NET 4.0。
我正在处理一个带有对象的请求 HttpListenerWorkerRequest
, 扩展了 HttpWorkerRequest
类,并创建一个请求 GetRawUrl()
返回 http://localhost:82/Default.aspx
格式的 Url .
在 .NET 2.0 中,将此发送到 HttpRuntime.ProcessRequest(httpListenerWorkerRequest)
可以正常工作,但是在 .NET 4.0 中,我得到一个网页,上面只有“错误请求”文本。
开裂HttpRuntime
,我可以看到错误请求是从 ProcessRequestInternal(HttpWorkerRequest wr)
抛出的,一个试图构建 HttpContext 的私有(private)方法。
我自己试过这个:
try
{
//what's going on?
hcontext = new HttpContext(workerRequest);
}
catch(Exception e)
{
//Debugging break point here
}
The relative virtual path 'http:/localhost:82/Default.aspx' is not allowed here
, 扔在
at System.Web.VirtualPath.Create(String virtualPath, VirtualPathOptions options)
at System.Web.HttpRequest.get_ClientFilePath()
at System.Web.Security.CookielessHelperClass.RemoveCookielessValuesFromPath()
at System.Web.HttpContext.Init(HttpRequest request, HttpResponse response)
at System.Web.HttpContext..ctor(HttpWorkerRequest wr)
at Talcasoft.Web.Hosting.HttpWorkerThread.Run(Object request) in
C:\[OurLibrary].Web\Hosting\HttpWorkerThread.cs:line 51
最佳答案
我不是 100% 确定这是“确切答案”,但看起来很接近我——还有更多要写的……
好像有一个breaking change
VirtualPath
中的一种类 - 并通过他们如何检查 illegal characters
得到证实. (顺便说一句。你可以用谷歌搜索“VirtualPath 源”来寻找它的 .NET 4 版本)。
内部 VirtualPath.Create
对“非法虚拟路径字符”调用检查。
它首先进入注册表(“ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET ”、“ VerificationCompatibility ”) - 查看 compatibility
应该使用模式“非法字符”。
Based on that - I'm guessing (I don't have a way of checking this right now) - that if you set the above registry value (int) to
1
- you should get your methods workingthe old way
and w/o any additional effort. Note: a IIS (or host process) restart may be required as suggested in one of the links
':', '?', '*', '\0' // .NET 4.0 - the default
'\0' // the 'compatibility' mode
illegal
根据新的默认值。
VerificationCompatibility
键(见上文)。
VirtualPath.Create
- 和你的
http://...
成为预期的绝对路径
/Default.aspx
.
HttpWorkerRequest
(而不是请求/响应等) -
raw Url
直接取自
worker
-
提供正确和规范化路径的责任取决于您的工作人员请求 . (这仍然有点不确定,看起来像是一个错误或内部处理不当)。
internal class MyRequest : SimpleWorkerRequest
{
public MyRequest() : base("", "", String.Empty, String.Empty, null) { }
public override String GetRawUrl() { return "http://localhost:82/Default.aspx"; }
}
// ...
var wr = new MyRequest();
var context1 = new HttpContext(wr);
The relative virtual path 'http:/localhost:82/Default.aspx' is not allowed here.
public override String GetRawUrl()
{ return new Uri(url, UriKind.RelativeOrAbsolute).AbsolutePath; }
VerificationCompatibility
注册表中的关键字似乎是它的关键。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ASP.NET
DWord Value Name: VerificationCompatibility Value Data: 1
关于.net - 为什么 .NET 2.0 升级到 .NET 4.0 后,HttpWorkerRequest 在 HttpRuntime.ProcessRequest 期间失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16071861/
我们可以为 HttpRuntime 缓存中的项目设置的最长过期时间是多少...? 另外,默认的过期时间是多少? public static void Add(string pName, object
我计划创建一个 Sharepoint 计时器作业并将其配置为在我们所有的农场 Web 前端计算机上运行。 计时器作业将从 SP SQL Server 实例读取数据,并希望将其更新到我们拥有的 2 个
虽然我已经指定了一个唯一的键,但似乎以下代码将为 5 个请求返回一个值,然后为接下来的几个请求返回另一个值,然后恢复到原始请求中保存的值并继续,直到有 10 个请求不同的对象都存储在同一个 key 下
我有一个简单明了的问题。我正在处理的网络应用程序正在使用单元测试(接近 1500 个测试)。由于需要对应用程序进行修改,因此多项测试失败,因为 HttpRuntime.BinDirectory 没有值
谁能告诉我这段代码在做什么: PropertyInfo p = typeof(HttpRuntime).GetProperty("FileChangesMonitor",
我有一个线程在我的 ASP.Net 后面运行。在这个线程中,我将数据放入缓存中,如下所示: HttpRuntime.Cache.Insert("test", "test", null, DateTim
我正在尝试从 HTTPRuntime 缓存中保存和检索图像,但出现异常。我能够将流保存到缓存中,但是当我尝试检索它时,出现异常: the request was aborted. The connec
是否可以从另一个应用程序检索 HttpRuntime.Cache? 我有两个应用程序, 例如应用-A、应用-B 在 App-A 中,我正在向缓存中插入值 HttpRuntime.Cache.Inser
在我的工作地点,我们有一个 ASP.NET 页面,它使用以下代码来执行文件下载。我们使用它而不是 Request.TransmitFile(),因为该文件直接来自 zip 存档。 privat
我有一个控制台应用程序需要在我的 API 应用程序中动态加载所有端点并获取缓存数据的详细信息。 foreach (var routeTemplate in listRouteTempplate
我对以下代码有疑问。我有以下代码, if (HttpRuntime.Cache[cacheKey] == null) {
我们在 ASP.NET 中使用 HttpRuntime.Cache API 来缓存从数据库检索的数据。 对于这个特定的应用程序,我们的数据库查询具有很多参数,因此我们的缓存键看起来像这样: table
我正在尝试实现具有缓存功能的 Web 应用程序。我需要缓存的原因是我们有一个应用程序可以让用户访问在线类(class)。现在,一旦用户登录,我就会根据我们的数据库验证他。验证后,我想将用户 ID 和类
与使用简单静态字段相比,使用 HttpRuntime 缓存的主要优点和缺点是什么? 我需要在整个 ASP.NET 应用程序的范围内存储数据。 HttpRuntime.Cache["MyData"] =
过去,我对访问 HttpRuntime.Cache 机制设置了锁定。我不确定我过去是否真的研究过这个问题并盲目地用一把锁把它包围起来。 您认为这真的有必要吗? 最佳答案 这篇文章建议应该使用锁: ht
我知道大多数人推荐使用 HttpRuntime.Cache,因为它具有更大的灵 active ……等等。但是如果您希望对象在应用程序的整个生命周期内持久保存在缓存中怎么办?使用 Application
我一直在使用 HttpRuntime 缓存在一个内部 [dasboard] asp.net 应用程序上缓存简单的用户首选项,该应用程序每天被近 200 名用户使用。 我只是缓存诸如上次查询条件、比例、
我正在考虑在我的 ASP.NET Web 应用程序中实现一些缓存以提高性能。我读过关于 HttpRuntime.Cache 的文章,它似乎就是为此而生的。唯一的问题是我想潜在地缓存大量数据(主要是 S
假设我有这样的东西: string TheFile = HttpRuntime.AppDomainAppPath + "\\SomeDir\\" + TheFilename + ".js"; Syst
我环顾四周,尚未找到一种在文件大小配置部分和我允许的最大值之间同步的方法。这可能吗? 在 web.config 文件中允许非常大的文件大小,然后在实现中强制使用较小的文件大小是否只是最佳实践? 最佳答
我是一名优秀的程序员,十分优秀!