2012-04-01 1 views
0

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

доступ к пути «C:/.....» Отказано

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

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

Кто-нибудь собирается чтобы дать бедным новым пользователям некоторую обратную связь для их downvotes? –

+0

@ user1305075-Можете ли вы показать, как вы пытаетесь записать его в «CSS»? – coder

+0

Тогда вы можете пропустить ответ на вопрос. Но не спускайте вниз, не давая пользователю некоторую обратную связь. –

ответ

1

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

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

UPDATE: вы используете WebForms, и вы пытаетесь динамически генерировать 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"> 
+1

Первой проблемой является то, что не включает полный путь! – Aristos

+0

aristos, вы не являетесь конструктивным, так что, пожалуйста, оставьте эту тему благодарю вас. @charlie kilian причина, по которой я пытаюсь написать файл css, заключается в том, что я хочу, чтобы мои пользователи могли редактировать некоторые функции css, такие как фоновый цвет и т. д. Я думал, что могу позволить им указать цвет, и это будет записанный в файл css – user1305075

+1

@ user1305075, у Аристоса есть смысл, он на самом деле пытается помочь здесь. Как вы можете написать файл только по имени? Вам нужно дать полный путь. DotNetter сделал ответ, но в некотором роде ошибается. –