小编twr*_*eid的帖子

在MVC 4 Controller中异步并等待

每次我尝试使用new AsyncAwait运算符并从数据库返回一组对象时,我都会遇到Invalid Operation异常.当我使用它只返回一个项目时它工作正常.

控制器代码:

public async Task<ActionResult> EnvironmentList()
{
    EfEnvironmentDataAccess dataAccess = new EfEnvironmentDataAccess();
    ICollection<Environment> environments = await dataAccess.GetAllEnvironmentsAsync();
    return PartialView(environments);
}
Run Code Online (Sandbox Code Playgroud)

查看代码:

<div class="ECURightCol">
<h3>Table Dumps</h3>
@Html.Action("EnvironmentList", "Environment")
@Html.Action("ComputerList", "Computer")
@Html.Action("ProductList", "Product")
@Html.Action("InstanceList", "Instance")
@Html.Action("ProfileList", "Profile")
Run Code Online (Sandbox Code Playgroud)

数据访问代码:

public ICollection<Environment> GetAllEnvironments()
{
    using (EcuWebDataContext db = new EcuWebDataContext())
    {
        return db.Environments.OrderBy(e => e.Name).ToList();
    }
}

public async Task<ICollection<Environment>> GetAllEnvironmentsAsync()
{
    return await Task.Run(() => GetAllEnvironments());
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

描述:执行当前Web请求期间发生未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.InvalidOperationException:HttpServerUtility.Execute在等待异步操作完成时被阻止.

.net c# asp.net-mvc async-await asp.net-mvc-4

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

F#中的列表展平

我是F#的新手,试图用F#重写我们的一个应用程序,试图在整个过程中学习它,我在列表清单时遇到了一些麻烦.我搜索并找到了几个答案,但我似乎无法让它们中的任何一个起作用.

我的数据类型是说它是val regEntries:RegistryKey列表

我希望它只是一个列表.

以下是我的代码:

namespace DataModule

module RegistryModule =
    open Microsoft.Win32

let regEntries = 
    ["SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"; "SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\"]
    |> List.map (fun x -> Microsoft.Win32.Registry.LocalMachine.OpenSubKey(x))
    |> List.map(fun k -> List.ofArray(k.GetSubKeyNames()) |> List.map (fun x -> k.OpenSubKey(x)) |> List.filter (fun x -> x.GetValue("ProductId") <> null))
Run Code Online (Sandbox Code Playgroud)

f#

9
推荐指数
2
解决办法
5969
查看次数

如何订阅DependencyProperty更改通知

我有一个静态依赖属性,我需要知道它的值何时更改,以便我可以调用回调并更新其他值.现在我不能这样做,因为回调不是静态的,而且依赖关系改变事件是.

当LostFocus事件触发时,我现在正在使用它,但是我希望每当发生更改时都将它连接起来.

c# wpf

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

Scala Slick和我的数据库中的复杂类型

我对Scala和Slick都很陌生,在尝试学习它时,我正在编写一个适用于简单数据库的小应用程序.

我以前的大部分经验都来自.Net和实体框架,所以我想知道是否在Entity Framework中使用ComplexType属性,如果Slick允许我这样做.

基本上我的一个表是1-1关系,对于其中一些我更喜欢创建一个对象并将其用作复杂类型.显然在数据库中,这只是表上的额外列,但我想知道Slick是否可以将这些列映射到我的Table类中的对象.见下面的例子.

我将使用博客条目示例.

扩展Table的主要类是BlogEntry它包含条目的文本.然后说我想在那个类中另一个叫做EntryDetails包含发布条目的时间和上次更新时间的类.

在数据库中,所有这些字段都在同一个表中,但在读入时,它将是一个包含另一个对象的对象.Slick有可能吗?

scala slick

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

GRPC Java将数据从服务器拦截器传递到rpc服务调用

我们将Java GRPC用于内部服务之一,并且有一个服务器端拦截器,可用于从标头中获取信息,并将其设置在内部使用ThreadLocal的日志记录上下文中。

因此,在拦截器中,我们执行以下操作:

LogMessageBuilder.setServiceName("some-service");

    final String someHeaderWeWant = headers.get(HEADER_KEY);

    final LoggerContext.Builder loggingContextBuilder = new LoggerContext.Builder()
        .someFieldFromHeaders(someHeaderWeWant);
LoggerContext.setContext(loggingContextBuilder.build());
Run Code Online (Sandbox Code Playgroud)

然后,在我们的服务电话中,我们将像这样访问它:

LoggingContext loggingContext = LoggingContext.getCurrent()
Run Code Online (Sandbox Code Playgroud)

但是,当前上下文有时会为空。

然后,我们尝试使用GRPC Context类,如下所示:

LogMessageBuilder.setServiceName("some-service");

        final String someHeaderWeWant = headers.get(HEADER_KEY);

        final LoggerContext.Builder loggingContextBuilder = new LoggerContext.Builder()
            .someFieldFromHeaders(someHeaderWeWant);
    Context.current().withValue(LOGGING_CONTEXT_KEY, loggingContextBuilder.build()).attach()
Run Code Online (Sandbox Code Playgroud)

然后像在服务调用中那样访问它:

LoggingContext context = LOGGING_CONTEXT_KEY.get(Context.current())
Run Code Online (Sandbox Code Playgroud)

但是有时也为空,并且如果我打印出内存地址,则无论我是否附加在拦截器中,上下文的早期似乎始终是ROOT上下文,但是在几次调用之后,上下文是正确的,并且记录器数据在那里这应该。

因此,如果有人有任何想法或更好的方法将数据从拦截器传播到服务调用,我将很乐意听到它。

java grpc

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

如何在配置文件中放置Windows特殊文件夹

在我的c#应用程序中,我有一个自定义配置部分来确定存储和检索某些文件的位置.但是这些的默认位置是在c:\ ProgramData目录中,我们使用它来访问它

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData);
Run Code Online (Sandbox Code Playgroud)

如何在配置文件中预填充该目录而不必写出原始字符串?在某些情况下,它也可能是一个不同的特殊文件夹.

基本上它是一个配置元素,如下所示:

<searchpath path="" priority="" isfullpath=""/>
Run Code Online (Sandbox Code Playgroud)

其中每一个都是搜索产品配置文件的路径,但是在不同版本的过程中,该目录已被移动,但为了向后兼容,我仍然需要搜索较旧的路径,如果我在其中找不到它们较新的路径.

例如,我现在必须在产品安装目录中搜索ProgramData目录,因为我们最新版本将其移动到当前产品安装目录中,但我们的旧版本将其存储在ProgramData目录中.

.net c#

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

与厨师用ssh键结账git repo

您好我的主厨要使用我的data_bag中的ssh密钥来检查我的git repo.

以下是我的git资源:

repo_key = search(:git, "id:git_key").first
git_key_file = "#{Chef::Config['file_cache_path']}/git_key/id_rsa"

directory "#{Chef::Config['file_cache_path']}/git_key" do
    action :create
end

file git_key_file do
    content repo_key['deploy_key']
    mode "0755"
    action :create_if_missing
end

git "/usr/share/my_repo" do
    repository "git@github.com:my_name/some_repo.git"
    checkout_branch "#{node["my_app"][:test_branch]}"
    action :sync
    ssh_wrapper "ssh -i #{git_key_file}"
end
Run Code Online (Sandbox Code Playgroud)

当我跑:sudo chef-client我得到以下错误:

STDERR: error: cannot run ssh -i /var/chef/cache/git_key/id_rsa: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我已经进入服务器,我可以验证密钥文件是否在适当的位置并包含密钥.

git ssh chef-infra

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

使用 ServerManager 类设置网站端口

我需要帮助使用 Microsoft.Web.Administration.ServerManager 类为网站设置端口。

首先我得到网站:

Site site = this._serverManager.Sites[section.WebsiteName];
Run Code Online (Sandbox Code Playgroud)

然后我尝试从我传入的设置中设置端口:

foreach (Binding b in from binding in site.Bindings.Where(b => b != null && b.EndPoint != null)
                                  select binding)
            {
                b.EndPoint.Port = Int32.Parse(section.Port);
                Console.WriteLine(b.EndPoint.Port);
            }    this._serverManager.CommitChanges();
Run Code Online (Sandbox Code Playgroud)

我把写行放在那里检查,端口永远不会改变,为什么?我已经知道该网站是有效的,因为我在到达这里之前检查过。

Binding binding = site.Bindings.CreateElement();
                binding.BindingInformation = String.Format("{2}:{0}:{1}", section.Port,b.Host, b.EndPoint.Address);
                //b.EndPoint.Port = Int32.Parse(section.Port);
                site.Bindings.Add(binding);
Run Code Online (Sandbox Code Playgroud)

我在上面尝试过,我得到了一个关于 GetAttributeValue 的 COMException。

由于下面的答案我不得不做,终于得到了它:

b.BindingInformation = String.Format("{2}:{0}:{1}", section.Port, b.Host, b.EndPoint.Address);
Run Code Online (Sandbox Code Playgroud)

c# iis-7

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

记录数量返回太多记录

您好我在MS Access 2013中的表单中有一些vba代码,出于某种原因,当我得到一个记录集时,它报告30行,当数据库真的只有1行并且我已经验证了这一点.

当我进行调试打印以查看id时,它只是重复30次的相同记录.

下面是运行的代码.

Option Compare Database

Dim selectPlacement As QueryDef
Dim rs As Recordset

Private Sub Form_Current()
    Set selectPlacement = CurrentDb.QueryDefs("SelectPlacement")
    Me.AddPlacementForm.Form.Visible = False

    selectPlacement.Parameters!stu = Me.student_id.Value
    selectPlacement.Parameters!sem = Me.semester_id.Value
    Me.AddPlacementForm.Form!lstStudent.Value = Me.student_id
    Me.AddPlacementForm.Form!cmbSemester.Value = Me.semester_id
    Me.PlacementsBlock1.Form.Filter = "[semester_id]= '" & Me.semester_id.Value & "'"
    Me.PlacementsBlock2.Form.Filter = "[semester_id]= '" & Me.semester_id.Value & "'"
    Me.PlacementsBlock1.Form.FilterOn = True
    Me.PlacementsBlock2.Form.FilterOn = True

    Set rs = selectPlacement.OpenRecordset
    Call SetUpPlacements(rs)
    rs.Close
    Set selectPlacement = Nothing
End Sub

Private Sub SetUpPlacements(rs As Recordset)
    If rs.RecordCount …
Run Code Online (Sandbox Code Playgroud)

ms-access vba access-vba ms-access-2013

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