我有一个MVC4应用程序,我添加了一个HttpHandler:
<system.web>
...
<httpHandlers>
<add path="Files" verb="*" type="MyHttpHandler" />
</httpHandlers>
</system.web>
Run Code Online (Sandbox Code Playgroud)
我也忽略了相关的路径,RegisterRoutes以便MVC不处理对"文件"的请求:
routes.IgnoreRoute("Files/{*pathInfo}");
Run Code Online (Sandbox Code Playgroud)
问题是MyHttpHandler仅针对"文件"的请求调用,而不是针对其任何子文件夹或子文件夹调用.
我已经尝试过使用该<location>元素,但是让它工作就意味着你将在"path"属性中对应用程序的虚拟路径进行硬编码(例如<location path='MyApp\Files'>).
用于允许"文件"及其任何子文件夹(以及这些文件夹的子文件夹等)的所有请求被路由到的正确方法是什么MyHttpHandler?
在下面的例子中,我创建了一个名为'Custom'的类,它实现了IComparable:
public int CompareTo(Object value)
{
// comparison logic here
}
Run Code Online (Sandbox Code Playgroud)
CompareTo(Object)的实现通常是"宽容的",因为它们会将"值"转换为更具体的类型.在这种情况下,将执行"Custom"类型的强制转换,以便进行比较.想象一下,我也重载了==运算符:
public static bool operator== (Custom lhs, Custom rhs)
{
// equivalence test here
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是在这种情况下:
Custom c = GetCustomObject();
Object o = GetOtherObject();
if(c == o)
{
// will not be true unless c and o are the same object
}
Run Code Online (Sandbox Code Playgroud)
问题是当调用==时,因为rhs是'Object'类型,它会回退到参考相等的默认测试 - 不调用重载.
这里有什么期望?我可以为==运算符添加另一个重载:
public static bool operator== (Custom lhs, Object rhs)
Run Code Online (Sandbox Code Playgroud)
但是,MSDN或其他在线示例中明显缺少这样的示例.这让我认为参考相等性的测试是预期的行为
例如,宏ParseVersion和RemoveBackslash都在 中声明ISPPBuiltins.iss。如果我尝试从 [Code] 中调用两者:
function InitializeSetup: Boolean;
var
Major, Minor, Rev, Build: Integer;
begin
RemoveBackslash('123\');
ParseVersion('12345', Major, Minor, Rev, Build);
end;
Run Code Online (Sandbox Code Playgroud)
RemoveBackslash编译正常,但添加ParseVersion会导致编译器错误:
未知标识符 'ParseVersion'"
当另一个宏声明的一部分时,ParseVersion似乎编译得很好,只是不是来自[Code]. 我应该可以这样称呼它吗?
我创建了一个使用 TFS vNext 构建的 UWP 项目。当它创建包时,它使用 appx 清单中的版本。相反,我想从 msbuild 命令行设置版本号。这可能吗?
我有一个.NET Core控制台应用程序。永远不会引发嵌套异步/等待中发生的异常:
static async Task Main(string[] args)
{
try
{
var f = new TaskFactory(TaskScheduler.Current);
await f.StartNew(async () =>
{
var x = 0;
if (x == 0)
throw new Exception("we have a problem");
await Task.Delay(1);
});
}
catch(Exception)
{
// never reaches here
}
}
Run Code Online (Sandbox Code Playgroud)
如果我删除inner async并将其调用删除await Task.Delay(1),则会捕获到异常。
c# ×2
asp.net-mvc ×1
async-await ×1
exception ×1
httphandler ×1
inno-setup ×1
msbuild ×1
overloading ×1
package ×1
pascalscript ×1
uwp ×1
version ×1
vnext ×1