string x = @"<document.write(""<SCR""+""IPT TYPE=""'text/javascript' SRC='""+""http""+(window.location.protocol.indexOf('https:')==0?'s':'')+""://""+gDomain+""/""+gDcsId+""/wtid.js""+""'><\/SCR""+""IPT>"");";
Префикс @ упрощает экранирование. Вы просто должны превратить каждое «в».
Вам будет гораздо проще поддерживать вашу программу, если вы сохраните JavaScript во внешнем файле. Я предполагаю, что вы используете StringBuilder, чтобы вы могли смешивать биты постоянного скрипта с несколькими динамическими значениями? Вы можете записать его в файл, но для динамических значений добавьте экранирование следующим образом:
var fromCSharp = {0};
Затем во время выполнения загрузите файл JS и передайте его в строку. Форматируйте в качестве строки формата вместе со значениями для замены каждого вхождения {0}, {1} и т. Д. Вам нужно только загрузить строку формата из файл один раз и держите его в кэше.
Также, если значения, которые вы вставляете в JavaScript, сами по себе являются строковыми литералами, вам нужно будет экранировать их в соответствии с синтаксисом JavaScript.