小编Cic*_*cio的帖子

从两个不同的脚本中写入和读取fifo

我有两个bash脚本.一个脚本写入fifo.第二个从fifo读取,但在第一个结束后写入.

但有些东西不起作用.我不明白问题出在哪里.这里的代码.

第一个脚本是(作者):

#!/bin/bash

fifo_name="myfifo";

# Se non esiste, crea la fifo;
[ -p $fifo_name ] || mkfifo $fifo_name;

exec 3<> $fifo_name;

echo "foo" > $fifo_name;
echo "bar" > $fifo_name;
Run Code Online (Sandbox Code Playgroud)

第二个脚本是(读者):

#!/bin/bash

fifo_name="myfifo";

while true
do
    if read line <$fifo_name; then
       # if [[ "$line" == 'ar' ]]; then
        #    break
        #fi
        echo $line
    fi
done
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?谢谢

bash fifo writer

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

使用 HttpClient 调用 WCF 服务

我必须调用 WCF 服务。WCF 服务已开启,我可以编辑其配置。

我想创建一个调用服务的客户端。我无法将服务引用添加到我的客户端,因此我尝试使用 HttpClient 调用它。

客户端代码:

    using (var client = new HttpClient())
    {
        //soapString is my input class serialized
        var content = new StringContent(soapString, Encoding.UTF8, "text/xml");
        using (var postResponse = client.PostAsync("http://localhost:52937/Attempts.svc/", content).Result)
        {
            string postResult = postResponse.Content.ReadAsStringAsync().Result;

        }
    }
Run Code Online (Sandbox Code Playgroud)

服务器端代码:

    [ServiceContract]
    public interface IAttempts
    {
        [OperationContract]
        void ReceiveAttemptResult(ReceiveAttemptResultInput result);
    }

    public class Attempts : IAttempts
    {
        string _backendUrl;

        public void ReceiveAttemptResult(ReceiveAttemptResultInput result)
        {
           //...
        }
    }
Run Code Online (Sandbox Code Playgroud)

最后是 web.config 服务器端:

    <system.serviceModel>
      <services>
        <service name="it.MC.Listeners.Attempts">
          <endpoint address="" contract="it.MC.Listeners.IAttempts" binding="basicHttpBinding"/>
          <endpoint …
Run Code Online (Sandbox Code Playgroud)

c# wcf httpclient

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

如何在N层架构中模拟实体框架

我有一个带有实体框架的N层应用程序(代码优先方法).现在我想自动化一些测试.我正在使用Moq框架.我发现编写测试有些问题.也许我的架构错了?如果错误,我的意思是我编写的组件不是很好,因此它们不可测试.我真的不喜欢这个......或许,我根本无法正确使用moq框架.

我让你看看我的架构:

在此输入图像描述

在每个级别,我都会context在类的构造函数中注入.

门面:

public class PublicAreaFacade : IPublicAreaFacade, IDisposable
{
    private UnitOfWork _unitOfWork;

    public PublicAreaFacade(IDataContext context)
    {
        _unitOfWork = new UnitOfWork(context);
    }
}
Run Code Online (Sandbox Code Playgroud)

BLL:

public abstract class BaseManager
{
    protected IDataContext Context;

    public BaseManager(IDataContext context)
    {
        this.Context = context;
    }
}
Run Code Online (Sandbox Code Playgroud)

存储库:

public class Repository<TEntity>
    where TEntity : class
{
    internal PublicAreaContext _context;
    internal DbSet<TEntity> _dbSet;

    public Repository(IDataContext context)
    {
        this._context = context as PublicAreaContext;
    }
}
Run Code Online (Sandbox Code Playgroud)

IDataContext 是一个由我的DbContext实现的接口:

public partial class PublicAreaContext : DbContext, …
Run Code Online (Sandbox Code Playgroud)

unit-testing entity-framework moq mocking n-layer

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

如何在不引用实体框架的情况下使用实体框架代码优先的空间类型

我有一个带有一些空间数据的实体...我正在程序集中使用DbGeographyDbGeometry引用System.Data.Entity...

我没有使用中引用的那个,EntityFramework.dll因为我有一个分层解决方案,并且我不想在解决方案中的任何地方引用实体框架,但只是在 DAL 内部......

当我尝试添加新的迁移时,出现以下错误:

EntityType“DbGeometry”没有定义键。定义此 EntityType 的键。

DbGeometry所以我尝试用字符串替换该属性OnModelCreating,我尝试编写以下代码:

modelBuilder.Entity<AddressInfo>()
    .Property(s => s.GeometryLocation)
    .HasColumnType("geometry");
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,我收到字符串数据类型与数据类型不兼容的错误DbGeometry...

有谁有解决这个问题的想法吗?DbGeometry有谁知道哪种数据类型与数据类型兼容?

谢谢

更新

EntityType 'DbGeography' has no key Defined不能解决我的问题。最后,该帖子的作者说

[他]确实必须在[他的]模型中添加对实体框架的引用

这正是我想要避免的......

瑞安还说

我认为它可以通过一个聪明的数据配置图来修复,我会使用它,并且如果我遇到任何可行的技术,我会更新

知道如何修复它吗?哪种数据类型可以替代 DbGeometry?

c# entity-framework spatial geospatial

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

如何在 Azure DevOps 中将图像居中

我在我的 wiki 页面中上传了一张图片作为附件...这里是生成到页面的代码:

![myImage.png](/.attachments/MyImage_3-dc7eb2d3-c632-4fe3-831a-b5dbfcbf1d98.png)
Run Code Online (Sandbox Code Playgroud)

我想将这张图片居中。但是我不能。

我尝试将该 YAML 代码包装在 HTML div 中。但是就像我无法在 HTML 标签中插入 YAML 标签一样...

我还尝试添加style标签,但styleAzure devOps Wiki 页面不支持标签。

最后我尝试添加 HTMLimg标签而不是 yaml,但它无法识别上传图像的相对路径...

是否存在使图像居中的方法?

谢谢

html yaml azure-devops

5
推荐指数
2
解决办法
8385
查看次数

扩展 Identity Server 4 的配置和操作数据上下文

我想自定义 Identity Server 4 的配置和操作数据上下文。

我让您查看配置存储的代码,因为代码非常相似。

这是我的定制商店:

internal class MyConfigurationDbContext : ConfigurationDbContext
{
    public MyConfigurationDbContext(DbContextOptions<ConfigurationDbContext> options, ConfigurationStoreOptions storeOptions)
        : base(options, storeOptions)
    {
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);

        modelBuilder.HasDefaultSchema("configuration");
    }
}
Run Code Online (Sandbox Code Playgroud)

这里我有第一个疑问。我认为构造函数的签名应该是

public MyConfigurationDbContext(DbContextOptions<MyConfigurationDbContext> options, ConfigurationStoreOptions storeOptions)
Run Code Online (Sandbox Code Playgroud)

但在这种情况下它无法DbContextOptions<MyConfigurationDbContext>转换DbContextOptions<ConfigurationDbContext>

好吧,在我的启动中我有这样的代码:

builder.AddConfigurationStore<MyConfigurationDbContext>(options =>
{
    options.ConfigureDbContext = b => b.UseSqlServer(connectionString,
        sql => sql.MigrationsAssembly(MIGRATION_ASSEMBLY));
});
Run Code Online (Sandbox Code Playgroud)

然后,我尝试生成第一次迁移:

Add-Migration InitialIdentityServerPersistedGrantDbMigration -Context MyConfigurationDbContext -OutputDir Data/Migrations/IdentityServer/PersistedGrantDb
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,我收到此错误:

Unable to resolve service for type 'Microsoft.EntityFrameworkCore.DbContextOptions`1[IdentityServer4.EntityFramework.DbContexts.ConfigurationDbContext]' while attempting to activate 'My.IdentityServer.DataLayer.Repository.Contexts.MyConfigurationDbContext'.
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

谢谢

dbcontext entity-framework-core identityserver4 entity-framework-migrations

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

如何在PHP Bot Telegram中创建内联按钮

我必须在PHP程序,由于公司需要......但我与PHP的首次工作......这是第一次,我用电报机器人的工作:"(在某种程度上,之前,当我跑的命令/startdoWork一切正常......

但现在我必须修改机器人,所有命令都隐藏在某个电报按钮后面...这里我是如何编辑我的php页面的:

if(strpos($text, "/start") === 0)
{
    $response = "Ciao $firstname, benvenuto!";

    $keyboard = [
        'inline_keyboard' => [
            [
                ['text' => 'forward me to groups']
            ]
        ]
    ];

    $encodedKeyboard = json_encode($keyboard);
    $parameters = 
        array(
            'chat_id' => $chatId, 
            'text' => $response, 
            'reply_markup' => $encodedKeyboard
        );
    $parameters["method"] = "sendMessage";
    echo json_encode($parameters);

}
Run Code Online (Sandbox Code Playgroud)

有了BotFather,我也运行了命令/setinline......

所以我想我正在研究我的parameters阵列..有人能帮助我吗?

Ps.:(如果任何人都可以建议我也是我工作的IDE请...我现在使用notepad ++)

谢谢你们

php telegram-bot php-telegram-bot

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

Entity Framework Core 中的自引用/父子关系一对零或一对一

我想在 Entity Framework Core 中创建一对零或一对一的引用/父子关系。我的意思是我的实体可以有一个父级:

public class MyEntity
{
    public Guid Id { get; set; }

    public Guid? ParentEntityId { get; set; }
    public MyEntity ParentEntity { get; set; }

    public MyEntity ChildEntity { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试通过 Fluent api 配置它:

entity.HasOne(x => x.ParentEntity)
    .WithOne(x => x.ChildEntity)
    .HasForeignKey( .... )
Run Code Online (Sandbox Code Playgroud)

我不明白我必须在最后一行写什么。我也不确定我的实体是否正确。

有人可以帮我吗?

编辑:这个问题不能解决我的问题:实体框架中的自引用/父子关系 我的问题是关于创建外键。此行不起作用:

.HasForeignKey(x => x.ParentEntityId)
Run Code Online (Sandbox Code Playgroud)

HasForeignKey需要输入一个字符串。

one-to-one self-referencing-table entity-framework-core

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

异步运行两个任务

我正在运行同步方法.在里面我必须运行两个大方法,所以我想以异步方式运行它们.我在想类似的东西

public void MyFunc()
{
    var doWorkTask_1 = DoWork1();
    var doWorkTask_2 = DoWork2();

    var result1 = await doWorkTask_1;
    var result2 = await doWorkTask_2;

    if(result1 == result2) 
       ....

    Thread.Sleep(syncInterval);
}
Run Code Online (Sandbox Code Playgroud)

要做到这一点,我需要:

  1. DoWork1并且DoWork2是异步的;
  2. MyFunc 也是异步的;

但没有方法是异步的!

所以我尝试用另一种方式做:

public void MyFunc()
{
    var doWorkTask_1 = Task.Run(() => DoWork1());
    var doWorkTask_2 = Task.Run(() => DoWork2());

    var result1 = doWorkTask_1.Result;
    var result2 = doWorkTask_2.Result;

    if(result1 == result2) 
       ....

    Thread.Sleep(syncInterval);
}
Run Code Online (Sandbox Code Playgroud)

所以,第一个问题:我是否以两种不同的方式写了同样的东西?

第二个问题.我必须MyFunc每隔X次运行一次该方法,所以我用这种方式调用它:

Task.Factory.StartNew(MyFunc);
Run Code Online (Sandbox Code Playgroud)

我可以简单地称呼它

MyFunc();
Run Code Online (Sandbox Code Playgroud)

我的问题是因为里面myFunc我有一个Thread.Sleep.我可以让主线程睡眠或者更好地让主线内的线程睡眠吗? …

.net c# multithreading asynchronous async-await

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

Hangfire后台作业仍然排队

我有一个MVC应用程序,正在尝试使用Hangfire和邮政发送电子邮件。该电子邮件必须在注册后发送。注册工作正常,但是我运行的作业仍然排队,并且我没有收到任何电子邮件。所以在我的MVC控制器中,我有以下代码:

public async Task<ActionResult> Register(RegisterViewModel model)
{
    //register correctly the user

    //I send the email
    BackgroundJob.Enqueue(() => 
        NotifyRegistration(user.Id, user.UserName, user.Email)   
    );

    ...
 }

[AutomaticRetry(Attempts = 5)]
public async Task NotifyRegistration(string userId, string username, string email)
{
    //I calculate callbackUrl

    var viewsPath = Path.GetFullPath(HostingEnvironment.MapPath(@"~/Views/Emails"));
    var engines = new ViewEngineCollection();
    engines.Add(new FileSystemRazorViewEngine(viewsPath));

    var emailService = new EmailService(engines);

    var emailToSend = new NewRegisteredUserEmail
    {
        To = email, UserName = username, CallbackUrl = callbackUrl 
    };

    emailService.Send(emailToSend);
}
Run Code Online (Sandbox Code Playgroud)

我无法调试NotifyRegistration方法。我不知道为什么 我正在使用邮政,所以EmailService不是我的实现。这里是我如何配置smtp服务:

<system.net>
  <mailSettings>
    <smtp deliveryMethod="Network">
      <network …
Run Code Online (Sandbox Code Playgroud)

c# postal asp.net-mvc-5 hangfire

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