这是IIS 7.5和ASP.NET的一个问题,我一直在研究和无处可去.任何帮助将不胜感激.
我的问题是:在IIS 7.5中使用ASP.NET,IIS和/或操作系统如何允许Web应用程序写入文件夹,就像C:\dump在完全信任下运行一样?我怎么没有为应用程序池用户显式添加写访问权限(在这种情况下ApplicationPoolIdentity)?
我知道的很多:
ApplicationPoolIdentity.ApplicationPoolIdentity 表示名为"IIS APPPOOL\AppPoolName"的Windows用户帐户,该帐户在创建应用程序池时创建,其中AppPoolName是应用程序池的名称.IIS_IUSRS组的成员.C:\Users,C:\Windows等等).例如,您的应用程序将有权写入某些文件夹,例如C:\dump.IIS_IUSRS组不会获得读取或写入访问权限C:\dump(至少不能通过Windows资源管理器中的"安全"选项卡显示该访问权限).IIS_IUSRS,则在尝试写入文件夹时会出现SecurityException(如预期的那样).因此,考虑到所有这些,如何授予"IIS APPPOOL\AppPoolName"用户写入权限?w3wp.exe进程以此用户身份运行,那么是什么允许此用户写入它似乎没有显式访问权限的文件夹?
请注意,我理解这可能是为了方便起见,因为如果您在完全信任下运行,授予用户访问它需要写入的每个文件夹将是一件痛苦的事.如果要限制此访问权限,则始终可以在"中等信任"下运行该应用程序.我有兴趣了解操作系统和/或IIS允许这些写入的方式,即使似乎没有授予显式文件系统访问权限.
我在asp.net 4.0中得到以下代码的错误
<script type="text/javascript" src='<%#=ResolveUrl("~/Scripts/jquery-1.4.1.js")%>'></script>
Run Code Online (Sandbox Code Playgroud)
错误消息:CS1525:无效的表达式术语'='
我在头标记的Site.Master中使用此代码
我需要传递一个字符串值Form1:
public void button1_Click(object sender, EventArgs e)
{
string DepartmentName = "IT";
Form2 frm2 = new Form2();
Frm2.Show();
this.Hide();
}
Run Code Online (Sandbox Code Playgroud)
参加Form2 Load活动.例如:
private void Form2_Load(object sender, EventArgs e)
{
MessageBox.Show(DepartmentName);
// or
// string sql1 = "select Service_Name from Service, " +
// "EmployeeService where E_Dep = '" + DepartmentName + "' " +
// "and s_ID = Service_ID";
}
Run Code Online (Sandbox Code Playgroud) 如果稍后验证方法被调用,在回调中执行断言是否可以接受?这是确保我的mock获取传递给它的预期参数的首选方法,还是应该在我的回调中设置局部变量并在该实例上执行断言?
我有一种情况,我在Presenter类中有一些逻辑,它根据输入派生值并将它们传递给Creator类.为了测试Presenter类中的逻辑,我想验证在调用Creator时是否遵守了正确的派生值.我想出了下面的例子,但是我不确定我是否喜欢这种方法:
[TestFixture]
public class WidgetCreatorPresenterTester
{
[Test]
public void Properly_Generates_DerivedName()
{
var widgetCreator = new Mock<IWidgetCreator>();
widgetCreator.Setup(a => a.Create(It.IsAny<Widget>()))
.Callback((Widget widget) =>
Assert.AreEqual("Derived.Name", widget.DerivedName));
var presenter = new WidgetCreatorPresenter(widgetCreator.Object);
presenter.Save("Name");
widgetCreator.Verify(a => a.Create(It.IsAny<Widget>()), Times.Once());
}
}
Run Code Online (Sandbox Code Playgroud)
我很担心,因为最后没有Verify调用,不能保证调用回调中的断言.另一种方法是在回调中设置局部变量:
[Test]
public void Properly_Generates_DerivedName()
{
var widgetCreator = new Mock<IWidgetCreator>();
Widget localWidget = null;
widgetCreator.Setup(a => a.Create(It.IsAny<Widget>()))
.Callback((Widget widget) => localWidget = widget);
var presenter = new WidgetCreatorPresenter(widgetCreator.Object);
presenter.Save("Name");
widgetCreator.Verify(a => a.Create(It.IsAny<Widget>()), Times.Once());
Assert.IsNotNull(localWidget);
Assert.AreEqual("Derived.Name", localWidget.DerivedName);
}
Run Code Online (Sandbox Code Playgroud)
我觉得这种方法不易出错,因为它更明确,并且更容易看到Assert语句将被调用.一种方法比另一种更好吗?有没有更简单的方法来测试传递给我缺少的模拟的输入参数? …
我认为这些问题是微不足道的,并且Enums只用一个整数表示,但我很惊讶它并非如此!这就是我所拥有的:
我有一个自定义配置文件,其中包含以下TraceEventType属性
[ConfigurationProperty("Severity")]
public TraceEventType Severity
{
get { return (TraceEventType)this["Severity"]; }
set { this["Severity"] = value; }
}
Run Code Online (Sandbox Code Playgroud)
在我的配置文件中,我使用以下值表示此属性:
...
<FileLog Filename="Test"
Severity="1" />
Run Code Online (Sandbox Code Playgroud)
结果:我得到了这个:
System.Configuration.ConfigurationErrorsException:无法解析属性"Severity"的值.错误是:枚举值必须是以下之一:严重,错误,警告,信息,详细,启动,停止,暂停,恢复,转移.
这是我的代码.文件abc.csv存在且充满了数据.
Dim strContent As String
Dim int As Integer
Open "C:\abc.csv" For Input As #int
strContent = Input(LOF(int), int)
Close #int
Run Code Online (Sandbox Code Playgroud)
我得到的错误是代码继续进行,好像文件从未存在过......但它确实存在于C:\ drive目录中.我更加确定了它.C:\ abc.csv在那里......我错过了什么?
我有一个问题,将数字的值复制到另一个字典.一切顺利,但是如果密钥已经存在,我只要将List中的值添加到另一个字典中.我不明白如何将相同的值添加到字典以及通过.
foreach (KeyValuePair<string, List<int>> record in dictonaryUnStem)
{
arrayWord = record.Key.ToCharArray();
st.add(arrayWord);
stemWord = st.stem();
if (!dictonaryStem.ContainsKey(stemWord))
{
dictonaryStem.Add(stemWord, record.Value);
}
else
{
foreach (int i in record.Value)
{
dictonaryStem[stemWord].Add(i);
}
}
}
Run Code Online (Sandbox Code Playgroud)
从给定的键整数添加到另一个字典时.我们加入了我的记录,也是整数字典UnStem.这是完全不合逻辑的.
stemWord = st.stem()
Run Code Online (Sandbox Code Playgroud)
给我根词,这是第一本词典中的关键词.在列表中存储该文本中的单词的位置.
我正在使用以下代码来测试创建位图并将其保存为TIFF文件.代码工作正常,但在我的一台计算机上生成的TIFF产生的MD5哈希值与我运行代码的其他几台计算机不同.所有计算机上的图像都相同,但由于某种原因,文件略有不同.使用十六进制编辑器进行检查,看起来页脚中的差异仅为4个字节.我使用LinqPad执行下面的代码.结果如下:
CPU 1 (Windows 7) Hash: 7A-F7-F4-C5-1A-02-10-D5-FC-C9-40-A1-4F-18-D7-FE
Others (Windows 7/8) Hash: 0D-5D-23-58-2F-DE-D5-B3-CB-73-31-E1-37-CF-32-3C
Run Code Online (Sandbox Code Playgroud)
这是测试代码:
void Main()
{
using(var bmp = new Bitmap(100, 100))
{
using(var g = Graphics.FromImage(bmp))
{
g.FillRectangle(Brushes.Blue, 10, 10, 80, 80);
}
using(var ms = new MemoryStream())
{
SaveBitmapAsTIFFToStream(ms, bmp);
ms.Position = 0;
var provider = new MD5CryptoServiceProvider();
string hash = BitConverter.ToString(provider.ComputeHash(ms));
Console.WriteLine(hash);
}
}
}
public static void SaveBitmapAsTIFFToStream(Stream stream, Bitmap b)
{
b.Save(stream, FindEncoder(ImageFormat.Tiff), null);
}
private static ImageCodecInfo FindEncoder(ImageFormat fmt)
{
return ImageCodecInfo.GetImageEncoders()
.FirstOrDefault(info1 => …Run Code Online (Sandbox Code Playgroud) c# ×5
asp.net ×2
.net ×1
csv ×1
dictionary ×1
enums ×1
file ×1
gdi+ ×1
iis-7.5 ×1
moq ×1
permissions ×1
tiff ×1
unit-testing ×1
vb6 ×1
winforms ×1