小编gle*_*ron的帖子

将作业添加到特定用户的PrintQueue

我有一个应用程序,根据用户请求执行一些中央文件生成.我希望能够用它做一次创建的文件是将它们放置在用户的打印队列(在这个组织有一个中央打印队列,以便用户负责打印自己的文档),这样他们就可以有用户准备好后打印出来.

通过使用System.Printing.net中的程序集,我可以将作业添加到我自己的打印队列中,所以我听起来就是那个部分.我的打印代码如下所示:

private void RunPrintJob( string myFileName )
    {
        PrintServer ps = new PrintServer(@"\\printatron");
        PrintQueue queue = new PrintQueue(ps, "psandqueues");
        try
        {
            PrintSystemJobInfo pj = queue.AddJob(myFileName);
            Stream myStream = pj.JobStream;
            Byte[] myByteBuffer = GenerateBufferFromFile(myFileName);                myStream.Write(myByteBuffer, 0, myByteBuffer.Length);
            myStream.Close();
        }
        catch (Exception ed)
        {
            Debug.WriteLine(ed.Message);
            if (ed.InnerException != null)
            {
                Debug.WriteLine(" -> " + ed.InnerException);
            }
            result = false;
        }
        queue.Commit();
    }
Run Code Online (Sandbox Code Playgroud)

所以我有我的集中创建的文档,我知道哪个用户负责他们的创建,我可以将它们发送到打印机.

我现在需要的是一种将创建它们的用户设置为打印机的方法.有没有办法通过打印队列执行此操作?我知道它可以从PrintSystemJobInfo.Submitter属性读取,但这是只读的.如果没有,我是否必须通过模拟来实现,如果是这样,在后一种情况下,我可以做些什么来避免必须存储一堆用户密码并且每次用户更改密码时软件都会失败?这似乎是一种非常笨拙的操作方式,但由于此活动目前尚未以交互方式执行,我还有其他选择吗?

c# printing impersonation

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

StackExchange.Redis中是否提供原始命令?

StackExchange.Redis中是否有任何功能允许您直接执行原始命令?就像我提供一个带有命令的字符串,例如(下面的假设代码):

conn.Send("ZADD mysortedset 1 john");
Run Code Online (Sandbox Code Playgroud)

我知道几乎每个命令都有可用的方法ZADD,但这不是重点.

c# redis stackexchange.redis

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

Powershell是否具有"eval"等价物?有没有更好的方法来查看属性和值列表?

我正在做一些Powershell脚本(第一次)来查看Sharepoint站点中的一些东西,我希望能够做的是查看对象的属性列表并输出它们的值以"property-name = value"的格式.

现在我可以使用这个找到元素列表:

$myObject | get-member -membertype property
Run Code Online (Sandbox Code Playgroud)

这将以非常清晰和可读的方式返回所有属性的列表.但我需要的是找到这些属性的值.

在一些脚本语言中,我可以有一种eval("$ myObject.$ propertyName")调用 - 我从get-member输出中提取$ propertyName - 并让它将字符串作为代码进行评估,这对于那种快速我需要的解决方案很好.

这是否存在于Powershell中,或者是否有更方便的方法?我应该使用反射吗?

reflection powershell

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

ASMX Web服务 - "此Web服务使用http://tempuri.org/作为其默认命名空间." 消息 - 但它不应该

我使用Visual Studio创建了一个Web服务(2005年 - 我知道我已经老了)并且它编译得很好但是当它打开时我会收到警告:

此Web服务不符合WS-I Basic Profile v1.1.

而且:

此Web服务使用http://tempuri.org/作为其默认命名空间.

除了我的服务开始之外,哪个会好的:

 [WebService(Namespace = "http://totally-not-default-uri.com/servicename")]
Run Code Online (Sandbox Code Playgroud)

在整个解决方案文件夹中搜索"tempuri"不会返回任何内容.我无法在Visual Studio中访问的任何配置页面中找到它.然而,当我通过浏览器查看并在同一标记中作为targetNamespace时,Web服务描述符页面上的xmlns:tns属性的wsdl:definitions列表就在那里.我正在使用Visual Studio的"调试"模式查看它,内置服务器.

似乎某些东西已缓存在某个地方,但我无法弄清楚什么和哪里 - 我已经尝试停止并重新启动服务器,清理和重建服务,并使用文本编辑器但没有骰子浏览相关的文本配置文件.知道发生了什么事吗?

c# web-services namespaces visual-studio-2005 asmx

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

存储跨域Web服务访问凭据的最佳实践?

我正在开发一个应用程序,它将使用Web服务连接到各种远程服务器,以检索有关这些(Windows)计算机的某些状态信息.

它在单个域中运行良好,我们可以使用Windows身份验证并确保调用服务的用户具有正确的凭据.但是,如果我们跨越无法工作的域工作,我们将需要为具有应用程序端必需权限的用户存储一组凭据.

是否存在为这些目的存储凭证的标准方法,Windows中的某种中央密码存储或方便的内置库以提供此类功能?如果不是,保持中央机器上的密码安全的最佳方法是什么,并确保在需要调用这些服务时远程机器凭证可用?

我希望这个应用程序主要安装在Windows Server操作系统之一 - 2003或2008上 - 如果这对可用内容产生任何影响.

windows passwords web-services credentials

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

实体框架填充了我的文本字段,尽管它们不是固定长度

我正在使用Entity Framework 4构建一个MVC3站点,我遇到了固定长度字段的问题.

当我在调试期间查看我的代码时,它会显示MyEntity.Title="Hello name "标题填充到字段的最大长度.

这通常是具有在EDMX文件固定字段长度或使用的问题char的基础数据库的数据类型,而不是varchar.在这种情况下既没有的那些是正确的,但是可能的是,该问题的字段固定长度的原本.我已经手动更改了EDMX中的每个字段(并且模型已经重新生成),并且字段在数据库中从未固定长度(这是应用程序的起点)所以我想填充字段的需要是存储在Entity Framework配置中的某个位置,尚未更新.

当新记录添加到数据库时会出现问题 - 当创建对象时,标题将是正确的,当它从数据库实例化时会被填充.

为了摆脱填充,我需要做什么,这实际上搞砸了我的字符串比较,除非我修剪一切?

entity-framework c#-4.0 asp.net-mvc-3

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

Enterprise Library Logging Distributor 配置中的 TraceListenerData 类型无效

我正在尝试使用 Enterprise Library MSMQ Distributor 服务来获取放置在 MSMQ 队列中的日志消息,并通过 Logging 块的标准数据库部分将它们放置在数据库中。

但是,当我尝试启动 Distributor 服务时,出现以下异常:

Exception Type: System.Configuration.ConfigurationErrorsException
Message: Invalid TraceListenerData type in configuration 'listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Database.Configuration.FormattedDatabaseTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging.Database"'. (C:\Projects\LogTest\msmqDistributor\MsmqDistributor.exe.Config line 15)
Run Code Online (Sandbox Code Playgroud)

有问题的行看起来像这样:

  <listeners>
   <add name="Database Trace Listener" type="Microsoft.Practices.EnterpriseLibrary.Logging.Database.FormattedDatabaseTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging.Database, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
    listenerDataType="Microsoft.Practices.EnterpriseLibrary.Logging.Database.Configuration.FormattedDatabaseTraceListenerData, Microsoft.Practices.EnterpriseLibrary.Logging.Database"
    databaseInstanceName="LoggingDB" writeLogStoredProcName="WriteLog"
    addCategoryStoredProcName="AddCategory" formatter="Text Formatter"
    traceOutputOptions="DateTime, Timestamp" />
  <!-- other listeners -->
  </listeners>
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚侦听器定义有什么问题 - 似乎分发服务器找不到它,但据我所知,相关的 dll 位于同一文件夹中。针对不同的应用程序运行相同的配置可以正常工作并将日志条目写入数据库,因此似乎这可能与服务权限有关,但我不知道我需要通过哪种方式查找此权限。

configuration logging enterprise-library msmq

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

实体框架 - “无法定义两个对象之间的关系”错误,但我认为我正在使用相同的上下文

在我的 ViewModel 中我有一些类似的代码:

public class OrderViewModel
{
    private UserOrder order;
    private DeliveryCentre deliveryCentre;

    // This is my EF Container
    private CatalogueContainer catalogue = new CatalogueContainer();

    // do some stuff...

    public void Save()
    {
        if (order == null)
        {
            order = catalogue.UserOrders.CreateObject();
        }
        // do some other stuff...

         if ((deliveryCentre == null)
            || (deliveryCentre.Id != deliveryCentreId))
        {
           deliveryCentre = catalogue.DeliveryCentres.First(centre => centre.Id == deliveryCentreId);

            //Causes a context error, not sure why...
            order.DeliveryCentre= deliveryCentre;
        }

        catalogue.SaveChanges();

    }
Run Code Online (Sandbox Code Playgroud)

因此,当交付中心是新的且订单是新的时,我会遇到旧的“无法定义两个对象之间的关系,因为它们附加到不同的 ObjectContext 对象”错误,这对我来说似乎有点不公平 - 我只是无法弄清楚我需要做什么才能使它们更多地属于同一对象上下文。我认为这是由于对实体框架行为的一些根本误解造成的。

c# ado.net ado.net-entity-data-model entity-framework-4

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

Entity Framework Code First TPH 继承 - 不同的子类可以共享一个字段吗?

我有一个使用 Entity Framework Code First 创建的实体框架模型,该模型使用每个层次结构表继承,其中结构看起来有点像这样:

public abstract class BaseState 
{
    public int Id { get; set; }

    public string StateName { get; set; }

    // etcetera
}


public class CreatedState : BaseState
{
    public User Owner { get; set; }

}

public class UpdatedState : BaseState
{
    public User Owner { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在创建的内容在我拥有并存储的BaseStates表中。但考虑到没有一个类会同时是 a和 an ,似乎对两者都使用一个单一的类是合乎逻辑的。这也将使跟踪数据库变得更容易。Owner_IdOwner_Id1CreatedStateUpdatedStateOwner_Id

我的基本问题是:Code First EF4 可以实现这一点吗?

我尝试映射列:

public class CreatedState : BaseState
{
    [Column("OwnerId")]
    public …
Run Code Online (Sandbox Code Playgroud)

c# entity-framework table-per-hierarchy ef-code-first

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

Angular服务的Jasmine测试不能解决延迟呼叫

我是Angular的新手,我正在测试一个运行API级别服务的Angular服务,该服务将大量调用包装到REST服务中.因为它正在处理HTTP请求,所以服务的两个部分都在使用promises,它似乎工作正常,但我无法对承诺的行为进行任何测试.

我的服务代码的相关部分(非常简化)如下所示:

angular.module('my.info')
 .service('myInfoService', function (infoApi, $q) {
    infoLoaded: false,
    allInfo: [],
    getInfo: function () {
        var defer = $q.defer();
        if (infoLoaded) {
            defer.resolve(allInfo);
        } else {
            infoApi.getAllInfo().then(function (newInfo) {
                allInfo = newInfo;
                infoLoaded = true;
                defer.resolve(allInfo);
            });
        }
        return defer.promise;
    }
});
Run Code Online (Sandbox Code Playgroud)

当我设置我的模拟时,我有这样的事情:

   describe("Info Service ",
     function() {
        var infoService, infoRequestApi, $q;
        beforeEach(module("my.info"));
        beforeEach(function() {
            module(function($provide) {
                infoRequestApi = {
                   requestCount: 0,
                   getAllInfo: function() {
                       var defer = $q.defer(); 
                       this.requestCount++;
                       defer.resolve( [ "info 1", "info 2" ] );
                       return …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jasmine angularjs angular-promise

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