问题列表 - 第8680页

将MembershipProvider注入ASP.Net MVC AccountController

Asp.Net MVC 1.0项目模板包含一个AccountController类,它支持构造函数注入:

public AccountController(IFormsAuthentication formsAuth, 
    IMembershipService service)
{
    FormsAuth = formsAuth ?? new FormsAuthenticationService();
    MembershipService = service ?? new AccountMembershipService();
}
Run Code Online (Sandbox Code Playgroud)

一个AccountMembershipService类也包括在内,而且它也支持构造器注入:

public AccountMembershipService(MembershipProvider provider)
{
    _provider = provider ?? Membership.Provider;
}
Run Code Online (Sandbox Code Playgroud)

我相信你们中的许多人已经将这些用于单元测试,但我的目标是使用Windsor 注入一个SqlMembershipProvider,因此使用Windsor xml文件而不是web.config在运行时配置它.换句话说,我想实际使用AccountMembershipService类的构造函数注入,我想继续使用内置的ASP.Net 2.0 Membership系统.我只想让会员系统的配置通过Windsor IoC.

如果没有编写我自己的MembershipProvider,或者SqlMembershipProvider不能很好地与IoC一起使用,这是否可行?

来自MSDN:"ASP.NET调用SqlMembershipProvider构造函数来创建应用程序配置中指定的SqlMembershipProvider类的实例.此构造函数不应在您的代码中使用."

我相信菲尔提出了一个非常相似的问题,但我没有足够的经验来解决他收到的答案.

谢谢你的帮助.


更新: 为了清楚起见,我通过DI提供应用程序的MembershipProvider的原因是支持多个租户.每个租户都有一个带有ASP成员资格表的独立数据库.DI允许我在运行时切换连接字符串,从而使核心应用程序不知道每个租户使用哪个数据库.Windsor正在控制DI,它"知道"哪个租户通过url发出请求:
var url = HttpContext.Current.Request.ServerVariables["HTTP_HOST"]

Mike Hadlow 在这里讨论这种技术. 我只是想将SqlMembershipProvider集成到他对这个IoC设计的使用中.

再次感谢.

asp.net-mvc dependency-injection castle-windsor asp.net-membership sqlmembershipprovider

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

如何打印全尺寸A4页面?

我需要在A4页面上打印24个标签(37x70mm).

我为一个A4页面大小的表生成html.

我尝试从浏览器打印页面但没有成功:尽管我将页边距设置为0(对于html页面和浏览器也是如此),页面不会从顶部开始.

我尝试用abcpdf生成一个pdf文件,这里有一半成功,页面从顶部开始,但它不打印底部边距.

任何的想法?

c# printing pdf-generation

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

在python中使用execfile的NameError

我的应用程序有一个按钮,使用execfile动态执行python脚本.如果我在脚本中定义一个函数(例如spam())并尝试在另一个函数中使用该函数(例如eggs()),我会收到此错误:

NameError: global name 'spam' is not defined
Run Code Online (Sandbox Code Playgroud)

eggs()中调用spam()函数的正确方法是什么?

#mainprogram.py
class mainprogram():
    def runme(self):
        execfile("myscript.py")

>>> this = mainprogram()
>>> this.runme()

# myscript.py
def spam():
    print "spam"

def eggs():
    spam()

eggs()
Run Code Online (Sandbox Code Playgroud)

此外,我似乎无法从脚本中的主应用程序执行方法.即

#mainprogram.py
class mainprogram():
    def on_cmdRunScript_mouseClick( self, event ):
        execfile("my2ndscript.py")
    def bleh():
        print "bleh"

 #my2ndscript.py
 bleh()
Run Code Online (Sandbox Code Playgroud)

错误是:

NameError: name 'bleh' is not defined
Run Code Online (Sandbox Code Playgroud)

my2ndscript.py调用bleh()的正确方法是什么?

编辑:更新了第一期

python scope namespaces class

4
推荐指数
3
解决办法
7131
查看次数

在HTML电子邮件中嵌入附加图像

如果我将图片附加到电子邮件,我该如何将其放入HTML内容?我尝试使用文件名作为图像源,但似乎不起作用.

email mime

17
推荐指数
4
解决办法
5万
查看次数

什么是编程的低成本电子套件?

现在系统功能如此强大,似乎没有什么比试图从一些8位微处理器和少于64kb内存中获得最大收益的有趣挑战.有什么东西(不是模拟器)可以提供类似的体验吗?

electronics circuit

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

设置Perl脚本的有效组ID

我有文件权限问题,我想解决,而不是诉诸于一切世界可写.

我正在将文件写入NetApp SAN.我正在写入的目录由devel用户拥有,并且具有一组devel具有组可写权限(0775)的目录.我写的用户名是在usernamedevel组中.

问题似乎是SAN只检查第一组,所以我得到了许可被拒绝.如果我使用newgrpsg命令将我的组更改为devel,那么我可以写入目录.

尝试写入的脚本是用Perl编写的,但它是通过ssh和一些bash脚本从另一台机器远程启动的.

我无法将目标目录更改为username组,因为还有其他开发人员,他们在不同的组中(但我们都共享该devel组).

我无法使Perl脚本本身具有setgid,因为我们使用适当的组运行不同的环境(devel,test,qa,production等),我不想在该级别管理文件权限位.

我无法setgid在Perl脚本中使用POSIX 函数,因为它不是以root身份启动的(我无法获得root权限),因此我获得了权限被拒绝.分配给$)$(给出相同的结果.

我不能使用newgrpbash中的命令,因为newgrp它不接受任何参数,它只是启动一个新的交互式shell(在新shell退出后执行以下任何命令).

我也无法使用newgrp启动新shell并从那里生成Perl脚本,因为Perl脚本是通过ssh连接在远程计算机上执行的.该脚本将在我的默认组下的远程计算机上获得"新鲜"shell,而不是newgrp在本地计算机上设置的组.

我无法使用该sg命令,因为它只需要一个参数.我引用完整的命令行,包括已知的参数.但是,我们通过ssh启动远程进程的方式包括在"$@"bash变量中传递本地参数.换句话说,我可以做一个process start或者process stop,process脚本处理ssh命令并传递我输入的任何本地参数"$@".我已经尝试过编写一个包装器,但发现我们使用了各种有趣的本地参数形式,并且犹豫是否要潜入必要的引用和逃避噩梦.

所以,我的问题是:是否有人知道从Perl或bash为正在运行的进程设置有效组ID的其他方法?是否存在多参数形式sg

bash perl

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

什么时候需要git-rebase?

每次我阅读git-rebase文档时,我都迷路了.这对我来说就像是一种低级操作(读作:黑暗魔法).

引用文档:

假设存在以下历史记录,并且当前分支是"主题":

       A---B---C topic
      /
 D---E---F---G master 
Run Code Online (Sandbox Code Playgroud)

从这一点来看,以下任一命令的结果:

git rebase master 
git rebase master topic 
Run Code Online (Sandbox Code Playgroud)

将会:

               A'--B'--C' topic
              /
 D---E---F---G master

问题是:为什么有人想做这样的事情?

首先,它似乎是"重写"历史,好像分支开始于另一个点; 基本上,提交历史将是"一堆谎言".

还有一点,它感觉不安全.我尝试了一次,遇到了大量的冲突,一切都崩溃了.我不记得我究竟是如何解决这个问题的,但如果我没记错的话,它就是在一个临时的测试分支或类似的东西上.

另一个问题:我是否因为不知道如何使用而错过了一些非常酷/省时的功能git-rebase

编辑:

相关问题:撤消git rebase

git version-control rebase

17
推荐指数
3
解决办法
2546
查看次数

Visual Studio 6的现代等价物"取决于"实用程序

是否有一个很好的工具可以查看.NET程序集并告诉您它在其他程序集上的所有依赖项?有点像VS6天的旧的depends.exe.

更新
我想我从Reflector中遗漏的一件事是verion#'s.除非我遗漏了什么.如何判断程序集需要什么框架?

我正在尝试解决我遇到的另一个问题:
IronPython,Click Click,.NET 2.0 Error - 想法?

从错误消息看起来我需要:
Microsoft.Linq.Expressions.Compiler.Snippets
Microsoft.Linq.Expressions.Compiler.LambdaCompiler

除了应用程序炸毁我...我怎么能在这里发现需要?它在我的机器上运行良好.

这是3.0还是3.5的东西?

.net dependencies visual-studio

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

jQuery找到整数并附加小数

需要选择SELECT下拉列表选项并查找是否有任何值是整数,然后将.00附加到列表值选项.也需要改变价值.

<select>
  <option value="1">1</option>
  <option value="1.99">1.99</option>
  <option value="2.99">2.99</option>
  <option value="4">4</option>
</select>
Run Code Online (Sandbox Code Playgroud)

在此先感谢任何帮助

javascript jquery numeric

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

Java网络服务器和TIME_WAIT

我遇到了一个网络服务器的问题,该服务器接收来自我公司生产的设备的信号.该设备偶尔会重用它刚才使用的源端口.这会导致服务器删除SYN.然后,设备将重试,直到旧套接字在服务器上超出TIME_WAIT.然后服务器进行SYN-ACK.

服务器是用Java编写的.遗憾的是,修改设备以正确循环端口不是一种选择,因为该领域有许多,并且不能更新现有单元.旧的软件是用C++编写的,并以某种方式从Windows TCP堆栈的列表中清除了TIME_WAIT端口.

任何人都可以向我提供有关如何在Windows上绕过Java的TIME_WAIT的建议吗?

编辑:我确实在Wireshark中确认该设备正在重用最近使用的端口.

在服务器套接字上,我使用以下选项:

socket = new ServerSocket();
socket.setPerformancePreferences(3, 2, 1);
socket.setReuseAddress(true);
socket.setSoTimeout(CLIENT_READ_TIMEOUT);
socket.bind(new InetSocketAddress(group.getPort()), MAX_TCP_BACKLOG);
Run Code Online (Sandbox Code Playgroud)

并且客户端套接字在收到后具有以下设置:

Socket client = server.accept();
client.setKeepAlive(false);
client.setSoLinger(true, 0);
client.setReuseAddress(true);
client.setTcpNoDelay(true);
client.setSoTimeout(CLIENT_READ_TIMEOUT);
Run Code Online (Sandbox Code Playgroud)

我已经尝试了SO_LINGER作为true和false,具有完全相同的跟踪结果.CLIENT_READ_TIMEOUT设置为10秒.

java sockets networking

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