我已经通过 NuGet (带有Core和LibSassHost组件的BundleTransformer.SassAndScss v1.9.96)在我的 MVC 5 项目中设置了 BundleTranslator )。接下来,我已将包引用添加到我的View.cshtml
public static Object[][] getTableAsMapObject(String xlFileName, String xlSheetName) throws Exception {
Map<String, String> dataMap = null;
Object[][] tabArray = null;
String masterDataFilePath = "./data/MasterData.xlsx";
try {
FileInputStream ExcelFile = new FileInputStream("./data/" + xlFileName + ".xlsx");
// Access the required test data sheet
XSSFWorkbook excelWBook = new XSSFWorkbook(ExcelFile);
XSSFSheet excelWSheet = excelWBook.getSheet(xlSheetName);
row = excelWSheet.getRow(0);
int totalCols = row.getLastCellNum();
totalCols--;
int startRow = 1;
int startCol = 1;
int ci;
int totalRows = excelWSheet.getLastRowNum();
int activeRows = 0;
ci = 0;
for (int i = startRow; i <= totalRows; i++, ci++) {
if (getCellData(excelWSheet, i, 0).trim().toUpperCase().equals("YES")
|| getCellData(excelWSheet, i, 0).trim().toUpperCase().equals("Y")) {
activeRows++;
}
}
tabArray = new Object[activeRows][1]; //***<<< Changing 0 to 1 did the trick
ci = 0;
for (int i = startRow; i <= totalRows; i++) {
if (getCellData(excelWSheet, i, 0).trim().toUpperCase().equals("YES")
|| getCellData(excelWSheet, i, 0).trim().toUpperCase().equals("Y")) {
dataMap = new HashMap<String, String>();
for (int j = startCol; j <= totalCols; j++) {
String colName = getCellData(excelWSheet, 0, j);
if (colName.contains("_")) {
String[] bits = colName.split("_");
String lastOne = bits[bits.length-1];
if (lastOne.equalsIgnoreCase("key")) {
dataMap = getMasterDataSet(masterDataFilePath, bits[0], getCellData(excelWSheet, i, j), dataMap);
}
} else { dataMap.put(colName, getCellData(excelWSheet, i, j)); }
}
tabArray[ci][0] = dataMap;
dataMap = null;
ci++;
}
}
excelWBook.close();
} catch (FileNotFoundException e) {
System.out.println("Could not read the Excel sheet");
e.printStackTrace();
} catch (IOException e) {
System.out.println("Could not read the Excel sheet");
e.printStackTrace();
}
return (tabArray);
}
并重新定义 BundleConfig.cs :
@Styles.Render("~/Content/sass")
在构建之后,该网站有一个.scss参考:
var nullOrderer = new NullOrderer();
var commonStylesBundle = new CustomStyleBundle("~/Content/sass");
commonStylesBundle.Include("~/Content/Custom/the-style.scss");
commonStylesBundle.Orderer = nullOrderer;
bundles.Add(commonStylesBundle);
并且一切都在本地工作可能只是因为我已经使用 SassyStudio 安装了 SassAndCoffee 包。当我在外部IIS服务器上部署时出现问题。该文件存在于Content / Custom目录中,但该网站已损坏。 HTML代码也有文件引用(它链接到.scss文件,而不是编译.css),但如果我尝试导航到它,我会得到错误500.
我已将Sass文件构建操作更改为内容(来自无)并将复制到输出目录 as 不要复制。我还在Web.config中添加了httpHandlers(但实际上我不知道是什么),但仍然没有任何帮助。
<link href="/Content/Custom/the-style.scss" rel="stylesheet">
我没有检查 Web.config 中的所有设置,因为NuGet安装(我看到)为BundleTransformer提供了这种数据。
如何配置 BundleTransformer 才能在 IIS 上正常使用?我是否必须将 BundleResolver 覆盖为in example code?
<httpHandlers>
<add path="*.sass" verb="GET" type="BundleTransformer.SassAndScss.HttpHandlers.SassAndScssAssetHandler, BundleTransformer.SassAndScss" />
<add path="*.scss" verb="GET" type="BundleTransformer.SassAndScss.HttpHandlers.SassAndScssAssetHandler, BundleTransformer.SassAndScss" />
</httpHandlers>
答案 0 :(得分:2)
有几件事要尝试来诊断问题。首先它在本地工作! :)
<强> 1 强>
值得测试的是您的捆绑正常运行。您可以通过临时设置以下内容来完成此操作(完成后将其取出)。
public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
BundleTable.EnableOptimizations = true;
// Bundles and stuff...
}
}
运行该网站,然后在您的浏览器开发工具中,您应该得到以下内容:
/捆绑/ commonStyles?V = BzJZwKfP1XV8a6CotGRsHhbxraPDst9zDL2X4r36Y301
如果这样可行,那么我们可以很高兴捆绑将在生产中工作。
<强> 2 强>
权限。如果您收到500内部服务器错误,请检查包含scss
文件的文件夹的权限。还要检查它们是否存在:)
第3 强>
哑剧型。 IIS需要为.scss
添加mime类型的可能性很小,但我不相信它会。