小编soh*_*hum的帖子

ASP.NET Web API中带有可选参数的属性路由

我正在尝试使用Web API 2属性路由来设置自定义API.我的路由工作,我的函数被调用,但由于某种原因,我需要传入我的第一个参数,以便一切正常工作.以下是我要支持的网址:

http://mysite/api/servicename/parameter1
http://mysite/api/servicename/parameter1?parameter2=value2
http://mysite/api/servicename/parameter1?parameter2=value2&parameter3=value3
http://mysite/api/servicename/parameter1?parameter2=value2&parameter3=value3&p4=v4
Run Code Online (Sandbox Code Playgroud)

最后3个URL可以工作,但第一个说"在控制器名称上没有找到与请求相匹配的操作".

我的控制器看起来像这样:

public class MyServiceController : ApiController
{
    [Route("api/servicename/{parameter1}")]
    [HttpGet]
    public async Task<ReturnType> Get(string parameter1, DateTime? parameter2, string parameter3 = "", string p4 = "")
    {
        // process
    }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api attributerouting asp.net-web-api-routing

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

处理WPF退出事件

我想知道是否有办法处理WPF应用程序退出事件,以便取消退出.用例是我有一个客户端 - 服务器情况,其中服务器是WPF应用程序.我希望WPF应用程序在关闭时通知客户端,但取消关闭过程.客户端应该收到关闭通知,执行自己需要的清理,然后通过请求请求WPF应用程序关闭.

这可能吗?

wpf events client-server exit

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

sqlite-net异步API是否支持配置?

我正在使用sqlite-net异步API来编写Windows Phone应用程序.在编写单元测试以确保我的sqlite-net API适配器正确创建文件时,我注意到适配器继续保持文件句柄,即使它已经超出范围.

异步连接类(SQLiteAsyncConnection)不支持,IDisposable所以我不能手动处理它.查看源代码,似乎异步API创建了一个连接,使用它并每次都处理它.但是,当我的测试清理代码尝试删除创建的测试数据库时,其他一些资源仍然保留在其上.

.net c# sqlite asynchronous windows-phone-8

12
推荐指数
1
解决办法
1451
查看次数

XML是否传递给存储在TFS DB中的TFS构建事件订阅者?

我已经通过SOAP Web服务选项为TFS 2012构建设置了一个自定义构建事件处理程序.这些处理程序运行良好,可以使用TFS为我们提供的XML有效负载.

我现在正在尝试构建一个可以显示构建类似信息的网页.但是,我不想经历尝试重新创建XML有效负载或修改我的接口以处理TFS对象而不是我通过解析有效负载定义的对象的麻烦.

那么,这个事件XML存储在DB的某个地方吗?是否可以通过TFS API访问或轻松生成?

tfs tfs-sdk tfs2012 tfs2013

8
推荐指数
1
解决办法
231
查看次数

WPF工具提示定位

我的WPF工具提示上有一种风格,它基本上使它看起来像一个语音泡泡.当控件位于窗口右侧时,气泡的尖部停止正确对齐,因为WPF重新对齐工具提示以适合窗口.无论如何根据工具提示的定位方式应用不同的样式?

我的XAML看起来像这样:

<Style x:Key="MyToolTip" TargetType="{x:Type ToolTip}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ToolTip}">
                <Grid x:Name="Grid">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="20" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <Rectangle Fill="#fff" Stroke="#FF000000" RadiusX="4" RadiusY="4" Grid.Row="1" />
                    <Path Fill="#fff" Stretch="Fill" Stroke="#FF000000" HorizontalAlignment="Left" Margin="8,0,0,-1.5" Width="20" Grid.Row="0"
                        Data="M 0,21 L 10,0 20,21" />
                    <ContentPresenter Margin="8" Grid.Row="1" />
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="Placement" Value="Bottom" />
    <Setter Property="HorizontalOffset" Value="-2" />
    <Setter Property="Width" Value="250" />
    <Setter Property="Height" Value="Auto" />
</Style>
Run Code Online (Sandbox Code Playgroud)

wpf xaml styles tooltip

7
推荐指数
1
解决办法
5245
查看次数

ngen和profiling

我正在尝试使用NGen来查看我的应用程序的本机映像是否比.NET更好.但是,我在弄清楚该怎么做时遇到了一些麻烦.

我的应用程序名为MyApp.exe,它有几个依赖DLL.

我打开了VS 2010命令提示符并运行:

ngen install MyApp.exe /Profile
Run Code Online (Sandbox Code Playgroud)

命令输出未表明遇到任何问题.

然后我去了C:\ Windows\assembly尝试运行EXE,但我找不到它(我在Windows 7上).一点点挖掘告诉我使用命令提示符浏览到C:\ Windows\assembly\NativeImages_v4.0.30319_32.我最终很好地找到了我的MyApp.ni.exe,但当然无法在资源管理器中打开包含文件夹.

我试图运行该程序,它告诉我:

"C:\ Windows\assembly\NativeImages_v4.0.30319_32 ...\MyApp.ni.exe不是有效的Win32应用程序."

命令输出表示Access被拒绝.

我有两个问题:

  1. 如何运行此程序以便我可以执行本机版本.
  2. 我该如何进行剖析呢?看起来我无法在VS2010探查器中找到该文件夹​​,因为它在资源管理器中无法看到.

谢谢.

.net profiling ngen visual-studio-2010

6
推荐指数
1
解决办法
1323
查看次数

MonoMac中的应用程序关闭

我正试图通过使用关闭MonoMac应用程序Environment.Exit(0).但是,由于某种原因,此呼叫不会返回.它也不会抛出异常.当我在MonoDevelop的立即窗口中执行该功能时,它会超时.

我不知道如何进行调试.我以为Environment.Exit会杀死进程......

c# exit monomac

6
推荐指数
1
解决办法
850
查看次数

在MonoMac中以编程方式创建NSMenuItems

我正在尝试以编程方式将菜单添加到我的MonoMac应用程序中.我打开了MainMenu.xib并NSMenuItem从MainMenu控件中删除了所有内容.

我将以下代码添加到我的FinishedLaunching覆盖中:

var fileMenuItem = new NSMenuItem("File");
var fileMenu = new NSMenu();

var fileNew = new NSMenuItem("New");
var fileOpen = new NSMenuItem("Open");
var fileSave = new NSMenuItem("Save");

fileMenu.AddItem(fileNew);
fileMenu.AddItem(fileOpen);
fileMenu.AddItem(fileSave);

fileMenuItem.Menu = fileMenu;

NSApplication.SharedApplication.MainMenu.AddItem(fileMenuItem); 
Run Code Online (Sandbox Code Playgroud)

但它没有做任何事情.

当我添加代码时MainWindowController.Initialize(),我得到一个断言失败"要插入菜单的项目已经在另一个菜单中"

我正在移植这个SO答案中找到的代码:用编程方式在其中创建带有NSMenuItems的NSMenu?

c# macos mono nsmenuitem monomac

6
推荐指数
1
解决办法
1070
查看次数

AutoResetEvent和多个集合

我正在尝试围绕堆栈设计数据结构,直到堆栈有可用项目为止.我尝试使用AutoResetEvent但我认为我误解了同步过程的工作原理.基本上,看下面的代码,我试图从没有可用的堆栈弹出.

它似乎AutoResetEvent表现得像一个信号量.那是对的吗?可我只是摆脱了Set()BlockingStack.Get(),并用它做什么?或者这会导致我只使用我的一个堆栈项目.

public class BlockingStack
{
    private Stack<MyType> _internalStack;
    private AutoResetEvent _blockUntilAvailable;

    public BlockingStack()
    {
        _internalStack = new Stack<MyType>(5);
        _blockUntilAvailable = new AutoResetEvent(false);

        for (int i = 0; i < 5; ++i)
        {
            var obj = new MyType();
            Add(obj);
        }
    }

    public MyType Get()
    {
        _blockUntilAvailable.WatiOne();

        lock (_internalStack)
        {
            var obj = _internalStack.Pop();
            if (_internalStack.Count > 0)
            {
                _blockUntilAvailable.Set(); // do I need to do this?
            }

            return obj;
        }
    }

    public …
Run Code Online (Sandbox Code Playgroud)

c# concurrency stack autoresetevent data-structures

6
推荐指数
2
解决办法
3283
查看次数

MEF GetExports <T,TMetaDataView>使用AllowMultiple = True返回任何内容

我不太了解MEF,所以希望这是我认为它的工作原理的简单解决方法.

我正在尝试使用MEF来获取有关类的一些信息以及如何使用它.我正在使用元数据选项来尝试实现此目的.我的接口和属性如下所示:

public interface IMyInterface
{
}

public interface IMyInterfaceInfo
{
    Type SomeProperty1 { get; }
    double SomeProperty2 { get; }
    string SomeProperty3 { get; }
}

[MetadataAttribute]
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
public class ExportMyInterfaceAttribute : ExportAttribute, IMyInterfaceInfo
{
    public ExportMyInterfaceAttribute(Type someProperty1, double someProperty2, string someProperty3)
        : base(typeof(IMyInterface))
    {
        SomeProperty1 = someProperty1;
        SomeProperty2 = someProperty2;
        SomeProperty3 = someProperty3;
    }

    public Type SomeProperty1 { get; set; }
    public double SomeProperty2 { get; set; }
    public string SomeProperty3 { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# attributes mef metadata

6
推荐指数
1
解决办法
4970
查看次数