Вот некоторая информация из Блог пользователя Scott Gu's , опубликованный Jeff о том, что на самом деле происходит:
Для тех, кто видит это исключение :
«Модель, поддерживающая контекст« Производство », изменилась с момента создания базы данных. Либо вручную удалите / обновите базу данных, либо вызовите
Database.SetInitializer
с экземпляромIDatabaseInitializer
.»Вот что происходит и что с ним делать:
Когда модель сначала создается, мы запускаем DatabaseInitializer, чтобы делать что-то вроде создания базы данных, если ее нет или добавить данные семени. По умолчанию DatabaseInitializer пытается сравнить схему базы данных, необходимую для использования модели, с хешем схемы, хранящейся в таблице EdmMetadata, созданной с помощью базы данных (когда Code First является тем, который создает базу данных). Существующие базы данных не будут иметь таблицу EdmMetadata и поэтому не будут иметь хэш ... и реализация сегодня будет бросать, если эта таблица отсутствует. Мы будем работать над изменением этого поведения, прежде чем мы отправим версию fial, так как это значение по умолчанию. До тех пор существующие базы данных обычно не нуждаются в инициализаторе базы данных, поэтому его можно отключить для вашего типа контекста, вызвав:
Database.SetInitializer
(null); Jeff
blockquote>
В прочтении ответа обеспечил в Блоге Rick Strahl, я нашел то, в чем я действительно нуждался, было довольно просто. Сначала необходимо определить относительный путь (который для меня был легкой частью), и передайте это в функцию, определяемую ниже:
VB.NET
Public Shared Function GetFullyQualifiedURL(ByVal s as string) As String
Dim Result as URI = New URI(HttpContext.Current.Request.Url, s)
Return Result.ToString
End Function
C#
public static string GetFullyQualifiedURL(string s) {
Uri Result = new Uri(HttpContext.Current.Request.Url, s);
return Result.ToString();
}
Существует некоторое превосходное обсуждение и идеи о блоге Rick Strahl
Править: Я должен добавить, что идеи работают с или без допустимого HttpContext.
EDIT2: вот определенный комментарий / код того сообщения, которое отвечает на вопрос
Вы попробовали AppSettings. RootUrl, который обычно настраивается в web.config файле?
Вы говорите о для использования в качестве ссылок?
если так, затем выполнение этого <a href='/'>goes to root</a>
возьмет Вас в файл по умолчанию веб-корня.
Теперь, для стороны клиента, выполнения, передавая "~ /" к Управлению:: метод ResolveUrl предоставит Вам, что Вы ищете. (http://msdn.microsoft.com/en-us/library/system.web.ui.control.resolveurl.aspx)
У меня нет способа проверить это в данный момент, но иметь Вас попробованный "Запрос. URL. AbsoluteUri" от другой машины?
Мне приходит в голову, что насколько Ваша машина обеспокоена, что это - браузер, запрашивает от localhost.
Я мог быть неправым, хотя, но я думаю, запрос относительно браузера а не веб-сервера.
Нашел этот код здесь :
string appPath = null;
appPath = string.Format("{0}://{1}{2}{3}",
Request.Url.Scheme,
Request.Url.Host,
Request.Url.Port == 80 ? string.Empty : ":" + Request.Url.Port,
Request.ApplicationPath);