我尝试在IIS上配置Angular / ASP.NET 5应用程序以支持深层链接,以便像domain.com/article/title-slug这样的网址
我已使用IIS重写模块将以下代码添加到我的web.config中:
#ifndef TWOLISTSELECTION_H
#define TWOLISTSELECTION_H
#include <QHBoxLayout>
#include <QListWidget>
#include <QPushButton>
#include <QWidget>
class TwoListSelection : public QWidget
{
Q_OBJECT
public:
explicit TwoListSelection(QWidget *parent = nullptr):QWidget{parent}{
init();
connections();
}
void addAvailableItems(const QStringList &items){
mInput->addItems(items);
}
QStringList seletedItems(){
QStringList selected;
for(int i=0; i<mOuput->count(); i++)
selected<< mOuput->item(i)->text();
return selected;
}
private:
void init(){
QHBoxLayout *layout = new QHBoxLayout(this);
mInput = new QListWidget;
mOuput = new QListWidget;
mButtonToSelected = new QPushButton(">>");
mBtnMoveToAvailable= new QPushButton(">");
mBtnMoveToSelected= new QPushButton("<");
mButtonToAvailable = new QPushButton("<<");
layout->addWidget(mInput);
QVBoxLayout *layoutm = new QVBoxLayout;
layoutm->addItem(new QSpacerItem(10, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
layoutm->addWidget(mButtonToSelected);
layoutm->addWidget(mBtnMoveToAvailable);
layoutm->addWidget(mBtnMoveToSelected);
layoutm->addWidget(mButtonToAvailable);
layoutm->addItem(new QSpacerItem(10, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
layout->addLayout(layoutm);
layout->addWidget(mOuput);
mBtnUp = new QPushButton("Up");
mBtnDown = new QPushButton("Down");
QVBoxLayout *layoutl = new QVBoxLayout;
layoutl->addItem(new QSpacerItem(10, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
layoutl->addWidget(mBtnUp);
layoutl->addWidget(mBtnDown);
layoutl->addItem(new QSpacerItem(10, 20, QSizePolicy::Minimum, QSizePolicy::Expanding));
layout->addLayout(layoutl);
setStatusButton();
}
void connections(){
connect(mOuput, &QListWidget::itemSelectionChanged, this, &TwoListSelection::setStatusButton);
connect(mInput, &QListWidget::itemSelectionChanged, this, &TwoListSelection::setStatusButton);
connect(mBtnMoveToAvailable, &QPushButton::clicked, [=](){
mOuput->addItem(mInput->takeItem(mInput->currentRow()));
});
connect(mBtnMoveToSelected, &QPushButton::clicked, [=](){
mInput->addItem(mOuput->takeItem(mOuput->currentRow()));
});
connect(mButtonToAvailable, &QPushButton::clicked, [=](){
while (mOuput->count()>0) {
mInput->addItem(mOuput->takeItem(0));
}
});
connect(mButtonToSelected, &QPushButton::clicked, [=](){
while (mInput->count()>0) {
mOuput->addItem(mInput->takeItem(0));
}
});
connect(mBtnUp, &QPushButton::clicked, [=](){
int row = mOuput->currentRow();
QListWidgetItem *currentItem = mOuput->takeItem(row);
mOuput->insertItem(row-1, currentItem);
mOuput->setCurrentRow(row-1);
});
connect(mBtnDown, &QPushButton::clicked, [=](){
int row = mOuput->currentRow();
QListWidgetItem *currentItem = mOuput->takeItem(row);
mOuput->insertItem(row+1, currentItem);
mOuput->setCurrentRow(row+1);
});
}
void setStatusButton(){
mBtnUp->setDisabled(mOuput->selectedItems().isEmpty() || mOuput->currentRow() == 0);
mBtnDown->setDisabled(mOuput->selectedItems().isEmpty() || mOuput->currentRow() == mOuput->count()-1);
mBtnMoveToAvailable->setDisabled(mInput->selectedItems().isEmpty());
mBtnMoveToSelected->setDisabled(mOuput->selectedItems().isEmpty());
}
QListWidget *mInput;
QListWidget *mOuput;
QPushButton *mButtonToAvailable;
QPushButton *mButtonToSelected;
QPushButton *mBtnMoveToAvailable;
QPushButton *mBtnMoveToSelected;
QPushButton *mBtnUp;
QPushButton *mBtnDown;
};
#endif // TWOLISTSELECTION_H
我的问题是我的网站不再加载,我有一个空白屏幕,网络标签中没有任何内容,也没有任何来源。
我的inetpub \ site \文件夹是dotnet核心发布文件夹的根目录,我在inetput \ site \ wwwroot中有角度构建资产
我的基础href是=&#34; /&#34;没有重写代码,一切正常。
最后,我尝试将重写网址更改为
<rewrite>
<rules>
<rule name="redirect all" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" pattern="" ignoreCase="false" />
</conditions>
<action type="Rewrite" url="wwwroot/index.html" appendQueryString="true" />
</rule>
</rules>
</rewrite>
但后来我开始收到错误:
<action type="Rewrite" url="/index.html" appendQueryString="true" />
答案 0 :(得分:1)
我最终通过废弃URL重写模块并在代码中处理它来解决这个问题:
app.Run(async (context) =>
{
context.Response.ContentType = "text/html";
await context.Response.SendFileAsync(Path.Combine(env.WebRootPath, "index.html"));
});