小编Dan*_*Dan的帖子

将HttpHandler添加到MVC应用程序

我有一个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

asp.net-mvc httphandler

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

当右侧是Object类型时,如何处理operator ==重载

在下面的例子中,我创建了一个名为'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或其他在线示例中明显缺少这样的示例.这让我认为参考相等性的测试是预期的行为

c# overloading operator-keyword

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

Inno Setup ParseVersion 不可从 [Code] 调用

例如,宏ParseVersionRemoveBackslash都在 中声明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]. 我应该可以这样称呼它吗?

inno-setup pascalscript

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

从 vNext 版本更改 appx 包版本

我创建了一个使用 TFS vNext 构建的 UWP 项目。当它创建包时,它使用 appx 清单中的版本。相反,我想从 msbuild 命令行设置版本号。这可能吗?

msbuild version package uwp vnext

3
推荐指数
1
解决办法
370
查看次数

嵌套异步/等待未引发异常

我有一个.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# exception console-application async-await

3
推荐指数
1
解决办法
110
查看次数