Доступ к пути запрещен C # ошибка - PullRequest
0 голосов
/ 01 апреля 2012

Я хочу, чтобы мой пользователь мог нажать кнопку «Отправить» и записать строку в файл CSS.Когда я нажимаю кнопку отправки, я получаю сообщение об ошибке:

Доступ к пути 'C: / .....' запрещен

Это происходитпри запуске сайта с локального хоста и на моем хостинге (123reg)

protected void btnSubmit(object sender, EventArgs e) 
{ 
   using (StreamWriter writer = new StreamWriter("B00101168.css")) 
   { 
      writer.Write("Word "); 
      writer.WriteLine("word 2"); 
   } 
}

1 Ответ

1 голос
/ 01 апреля 2012

Первая проблема в том, что вы не можете записать в файл, не установив разрешения для папки. Смотрите эту ссылку для подробностей. По сути, вы должны дать гостевой учетной записи в Интернете разрешение на запись в папку.

Но, большая проблема в том, что вы, вероятно, не должны пытаться динамически писать CSS-файл. По крайней мере, не так, как вы пытаетесь это сделать. Можете ли вы объяснить, почему вы пытаетесь динамически изменить файл CSS на вашем сервере? Если вы можете объяснить, что вы пытаетесь достичь, у меня могут быть некоторые предложения о том, как сделать это, что работает лучше, чем то, что вы пытаетесь сделать.

ОБНОВЛЕНИЕ: вы используете веб-формы и пытаетесь динамически генерировать CSS. Вот один из способов сделать это.

Используйте общий обработчик страниц - файл, оканчивающийся на .ashx. Вы динамически создаете CSS, как бы вы ни делали это сейчас, но вместо того, чтобы записывать его в файл, вы выводите его прямо в браузер. Вот некоторый (не проверенный!) Код:

В файле DynamicStyles.ashx практически нечего добавить к тому, что он автоматически генерирует.

В файле DynamicStyles.ashx.cs:

public void ProcessRequest( HttpContext context )
{
    StringBuilder css = new StringBuilder();
    // Use the StringBuilder to generate the CSS 
    // however you are currently doing it.

    context.Response.ContentType = "text/css";
    context.Response.Write( css.ToString() );
}

Затем, в вашем коде, который нуждается в файле CSS, включите его так же, как и любой другой CSS:

<link rel="stylesheet" type="text/css" href="/path/to/DynamicStyles.ashx">
...