小编Sea*_*ter的帖子

使用Guice注入通用实现

我希望能够使用Guice注入通用接口的通用实现.

public interface Repository<T> {
  void save(T item);
  T get(int id);
}

public MyRepository<T> implements Repository<T> {
  @Override
  public void save(T item) {
    // do saving
    return item;
  }
  @Override
  public T get(int id) {
    // get item and return
  }
}
Run Code Online (Sandbox Code Playgroud)

在C#中使用Castle.Windsor,我可以做到:

Component.For(typeof(Repository<>)).ImplementedBy(typeof(MyRepository<>))
Run Code Online (Sandbox Code Playgroud)

但我不认为Guice中存在等价物.我知道我可以TypeLiteral在Guice 中使用来注册个人实现,但是有没有办法像Windsor那样一次注册它们?

编辑:

这是一个用法示例:

Injector injector = Guice.createInjector(new MyModule());
Repository<Class1> repo1 = injector.getInstance(new Key<Repository<Class1>>() {});
Repository<Class2> repo2 = injector.getInstance(new Key<Repository<Class2>>() {});
Run Code Online (Sandbox Code Playgroud)

虽然更可能的用法是注入另一个类:

public class ClassThatUsesRepository {
  private Repository<Class1> repository;

  @Inject
  public ClassThatUsesRepository(Repository<Class1> …
Run Code Online (Sandbox Code Playgroud)

java ioc-container guice typeliteral

47
推荐指数
2
解决办法
3万
查看次数

Fluent NHibernate和PostgreSQL,SchemaMetadataUpdater.QuoteTableAndColumns - System.NotSupportedException:不支持指定的方法

我在PostgreSQL上使用fluentnhibernate.Fluentnhibernate是最新版本.PosrgreSQL版本是8.4.我的创建ISessionFactory的代码:

public static ISessionFactory CreateSessionFactory()
{
        string connectionString = ConfigurationManager.ConnectionStrings["PostgreConnectionString"].ConnectionString;
        IPersistenceConfigurer config = PostgreSQLConfiguration.PostgreSQL82.ConnectionString(connectionString);

        FluentConfiguration configuration = Fluently
            .Configure()
            .Database(config)
            .Mappings(m =>
                m.FluentMappings.Add(typeof(ResourceMap))                                    
                                .Add(typeof(TaskMap))
                                .Add(typeof(PluginMap)));
        var nhibConfig = configuration.BuildConfiguration();
        SchemaMetadataUpdater.QuoteTableAndColumns(nhibConfig);
        return configuration.BuildSessionFactory();
}
Run Code Online (Sandbox Code Playgroud)

当我在SchemaMetadataUpdater.QuoteTableAndColumns(nhibConfig)行执行代码时; throw error:System.NotSupportedException:不支持指定的方法.请帮帮我!我非常需要解决方案.最好的祝福

postgresql nhibernate fluent-nhibernate

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

什么是Windows上的网站的良好部署工具?

我正在寻找可以将(最好是只更改过的)文件从开发机器复制到分段机器,最后复制到一组生产机器的东西.

"假设"模式会很好,"回滚"最后一次部署的能力也会很好.数据库迁移不是必需的功能.

更新:免费/低成本的工具会很棒,但成本并不是唯一的问题.实际上可以管理从一个环境到下一个环境(dev-> staging-> production而不是从开发机器到每个环境)的部署的工具也是理想的.

另一个很好的功能是只能复制更改的文件 - 我们的一些旧网站包含数百个.asp文件.

deployment iis

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

IIS 7.5中的Windows身份验证因信任关系异常而失败

我有一个ASP.Net 2.0应用程序,它使用集成的Windows身份验证来验证/授权用户.该应用程序在Windows XP/IIS 5.1,Windows Server 2008/IIS 7和Windows Vista/IIS 7上正常运行.当我尝试在Windows 7/IIS 7.5上运行此应用程序时,出现以下异常:The trust relationship between this workstation and the primary domain failed.

堆栈跟踪如下:

[SystemException: The trust relationship between this workstation and the primary domain failed.
]
   System.Security.Principal.NTAccount.TranslateToSids(IdentityReferenceCollection sourceAccounts, Boolean& someFailed) +1085
   System.Security.Principal.NTAccount.Translate(IdentityReferenceCollection sourceAccounts, Type targetType, Boolean forceSuccess) +46
   System.Security.Principal.WindowsPrincipal.IsInRole(String role) +128
   System.Web.Configuration.AuthorizationRule.IsTheUserInAnyRole(StringCollection roles, IPrincipal principal) +229
   System.Web.Configuration.AuthorizationRule.IsUserAllowed(IPrincipal user, String verb) +354
   System.Web.Configuration.AuthorizationRuleCollection.IsUserAllowed(IPrincipal user, String verb) +245
   System.Web.Security.UrlAuthorizationModule.OnEnter(Object source, EventArgs eventArgs) +11153304
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
Run Code Online (Sandbox Code Playgroud)

web.config文件包含与身份验证/授权相关的以下信息:

<authentication …
Run Code Online (Sandbox Code Playgroud)

asp.net iis windows-authentication windows-7

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

C#和Facebook API

我目前正在使用Facebook API和C#.

我要做的是将图像上传到活动.

我尝试了两种方法,但似乎都没有用.有人可以看看.

方法1

        Dictionary<string, string> args = new Dictionary<string, string>();
        string source = "@test.jpg";
        string relpath = "/1234456789/photos";
        args.Add("message", "sssssss");
        args.Add("access_token", api.AccessToken);
        args.Add("source", source);
        api.Post(relpath, args);
Run Code Online (Sandbox Code Playgroud)

方法2

        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(String.Format("http://graph.facebook.com/1234456789/photos")); 
        request.ContentType = "multipart/form-data"; 
        request.Method = "POST";

        string path = HttpUtility.UrlEncode("test.jpg");
        request.BeginGetRequestStream(ar => 
        { 
            using (StreamWriter writer = new StreamWriter((ar.AsyncState as HttpWebRequest).EndGetRequestStream(ar))) 
            { 
                writer.Write("{0}={1}&", "message", HttpUtility.UrlEncode("Test")); 
                writer.Write("{0}=@{1}&", "source", path);
                writer.Write("{0}={1}", "access_token",
                    api.AccessToken); 
            } 
        }, request);
Run Code Online (Sandbox Code Playgroud)

方法3

        WebClient client = new WebClient();

        byte[] responseBinary = client.UploadFile("http://localhost:61689/Widgets/test2.aspx", "POST", @"C:\test.jpg");

        string …
Run Code Online (Sandbox Code Playgroud)

c# facebook

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

是否可以通过在ASP.NET中模拟Windows身份验证用户从Active Directory检索数据?

我一直在努力解决这个问题,而且我已经阅读了标准谷歌留言板答案中的一些相互矛盾的信息.

我要做的是从活动目录中检索域用户(即当前登录用户的)电子邮件地址.我的ASP.NET 4网站是为Windows身份验证设置的,一切正常,直到活动目录调用.

当我执行以下操作时,我在search.findAll()行上得到一个COMException.异常消息是"发生操作错误"(非常有用的消息呃?)(为了便于阅读,删除了代码)

WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity;
WindowsImpersonationContext wic = null;

wic = winId.Impersonate();
using (DirectoryEntry root = new DirectoryEntry(rootQuery))
{
      String userQuery = GetUserQuery();
      DirectorySearcher searcher = new DirectorySearcher(root);
      searcher.SearchScope = SearchScope.Subtree;
      searcher.Filter = userQuery;

      SearchResultCollection results = searcher.FindAll();
      return (results[0].Properties["proxyaddresses"][0]).ToString();
}
Run Code Online (Sandbox Code Playgroud)

所以基本上我想模仿登录用户进行通话.请注意,如果我将凭据直接传递给DirectoryEntry构造函数,此代码将按预期工作.此外,如果我摆脱模拟代码并在Web配置中设置应用程序范围的模拟,我会收到相同的错误.

所以我想我的问题,在我浪费任何时间之前,这是否可能?或者您是否必须指定用户名和密码才能访问AD?

在我的开发盒上BTW我正在运行IIS5,但可能会部署到IIS6.

编辑:

按照要求:

rootQuery = @"LDAP://{0}.com/DC={0}, DC=com";
userQuery = @"(&(samAccountName={0})(objectCategory=person)(objectClass=user))";
Run Code Online (Sandbox Code Playgroud)

使用适当的域和用户指定.

.net asp.net .net-4.0 active-directory windows-authentication

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

Lucene.net和3.5

在针对lucene.net的2.0版本构建3.5应用程序时,是否需要注意哪些特殊注意事项?

我发现有几个人会为lucene发布他们的项目文件,但不确定这是否是正确的方法.

lucene.net

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

jQuery UI对话框在IE9中不起作用

我有一个jQuery UI对话框,可以在我的应用程序上显示一个窗口.此窗口在IE7,IE8,FF和chorme中正确显示,但在IE9上无法正常工作.当我点击应打开对话框的链接时,没有任何反应.

有人可以帮帮我吗?

$('#open_chat').click(function() {
  $('#chat').dialog({
    width: 422,
    resizable: false,
    title: '<img align="absmiddle" src="/img/icone_chat.png"> Chat <span>(clique e arraste para movimentar)</span>'
  });
  return false;
})
Run Code Online (Sandbox Code Playgroud)

jquery jquery-ui jquery-ui-dialog internet-explorer-9

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

是否可以对 FtpWebRequest 使用“被动模式”

我们制定了每晚将文件上传到合作伙伴 FTP 站点的流程。他们现在需要被动连接,而我们的上传现在失败。.NET 4 FtpWebRequest 是否可以实现被动连接而不是主动连接?如果是这样,有人可以提供一个例子吗?

.net c# ftp passive-mode ftpwebrequest

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

ASP.NET MVC Razor:三元

使用带有Razor视图引擎的三元组时遇到一些麻烦.

我的模型有一个字符串属性.如果该字符串属性为null,我想null在视图中呈现.如果属性不为null,我希望它使用前导和尾随呈现属性值'.

我怎样才能做到这一点?

更新:对不起,稍微改了一下问题.

asp.net view razor

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

提高并发字典访问效率c#

我有一个列表,由多个后台线程访问以进行更新/读取.更新操作包括插入和删除.

为了在没有同步问题的情况下同时执行此操作,我在类中使用了一个私有只读对象的锁.

为了最大限度地减少我在读取数据时需要锁定列表的时间,我会对其进行深度克隆并返回深度克隆并解锁字典以进行插入/删除更新.

因此,每次读取列表都会增加我的服务的内存消耗.

需要注意的一点是,插入/删除是包含列表的类的内部.但阅读是为了公共消费.

我的问题是:

有什么办法,我可以避免克隆列表并仍然使用它同时使用读/写锁读取?

public class ServiceCache
    {
        private static List<Users> activeUsers;
        private static readonly object lockObject = new object();
        private static ServiceCache instance = new ServiceCache();

        public static ServiceCache Instance
        {
            get
            {
                return instance;
            }
        }

        private void AddUser(User newUser)
        {
            lock (lockObject)
            {
                //... add user logic
            }
        }

        private void RemoveUser(User currentUser)
        {
            lock (lockObject)
            {
                //... remove user logic
            }
        }

        public List<Users> ActiveUsers
        {
            get
            {
                lock (lockObject)
                {
                    //The cache …
Run Code Online (Sandbox Code Playgroud)

c# concurrency locking list c#-4.0

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