小编rsb*_*rro的帖子

IIS AppPoolIdentity和文件系统写入访问权限

这是IIS 7.5和ASP.NET的一个问题,我一直在研究和无处可去.任何帮助将不胜感激.

我的问题是:在IIS 7.5中使用ASP.NET,IIS和/或操作系统如何允许Web应用程序写入文件夹,就像C:\dump在完全信任下运行一样?我怎么没有为应用程序池用户显式添加写访问权限(在这种情况下ApplicationPoolIdentity)?

我知道的很多:

  • 在IIS 7.5中,应用程序池的默认标识是ApplicationPoolIdentity.
  • ApplicationPoolIdentity 表示名为"IIS APPPOOL\AppPoolName"的Windows用户帐户,该帐户在创建应用程序池时创建,其中AppPoolName是应用程序池的名称.
  • "IIS APPPOOL\AppPoolName"用户默认为该IIS_IUSRS组的成员.
  • 如果你是在完全信任运行Web应用程序可以写入到文件系统的许多地区(不包括像文件夹C:\Users,C:\Windows等等).例如,您的应用程序将有权写入某些文件夹,例如C:\dump.
  • 默认情况下,IIS_IUSRS组不会获得读取或写入访问权限C:\dump(至少不能通过Windows资源管理器中的"安全"选项卡显示该访问权限).
  • 如果拒绝写访问权限IIS_IUSRS,则在尝试写入文件夹时会出现SecurityException(如预期的那样).

因此,考虑到所有这些,如何授予"IIS APPPOOL\AppPoolName"用户写入权限?w3wp.exe进程以此用户身份运行,那么是什么允许此用户写入它似乎没有显式访问权限的文件夹?

请注意,我理解这可能是为了方便起见,因为如果您在完全信任下运行,授予用户访问它需要写入的每个文件夹将是一件痛苦的事.如果要限制此访问权限,则始终可以在"中等信任"下运行该应用程序.我有兴趣了解操作系统和/或IIS允许这些写入的方式,即使似乎没有授予显式文件系统访问权限.

asp.net permissions iis-7.5 windows-server-2008-r2

387
推荐指数
2
解决办法
27万
查看次数

ResolveUrl无法内联工作

我在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中使用此代码

asp.net

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

如何在C#中将字符串值从一个表单传递到另一个表单的load事件

我需要传递一个字符串值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)

c# winforms

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

验证传递给Mock的参数的正确方法是按预期设置的

如果稍后验证方法被调用,在回调中执行断言是否可以接受?这是确保我的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语句将被调用.一种方法比另一种更好吗?有没有更简单的方法来测试传递给我缺少的模拟的输入参数? …

c# unit-testing moq

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

如何在web.config文件中表示枚举?

我认为这些问题是微不足道的,并且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"的值.错误是:枚举值必须是以下之一:严重,错误,警告,信息,详细,启动,停止,暂停,恢复,转移.

c# configuration enums

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

我想将.csv文件的内容转储到Visual Basic 6中的字符串中.我的代码出了什么问题?

这是我的代码.文件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在那里......我错过了什么?

csv vb6 file

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

Dictionary <string,List <int >>复制到另一个Dictionary

我有一个问题,将数字的值复制到另一个字典.一切顺利,但是如果密钥已经存在,我只要将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)

给我根词,这是第一本词典中的关键词.在列表中存储该文本中的单词的位置.

c# dictionary

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

使用C#生成TIFF会在不同的计算机上生成不同的文件

我正在使用以下代码来测试创建位图并将其保存为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)

.net c# gdi+ tiff

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